分享
 
 
 

抽象工厂类

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

//package com.cc;

import Java.util.*;

import java.lang.Class;

interface book{

void sayBookName();

void sayBookPrice();

}

class ChineseBook implements book //中文书

{

private String name;

private int price;

public ChineseBook(){

//this.ChineseBook("chinese",10);

name = "ChineseBook";

price = 10;

}

public ChineseBook(String name,int price){

this.name = name;

this.price = price;

}

public void sayBookName(){

System.out.println("i am a chinese book "+name);

}

public void sayBookPrice(){

System.out.println("my price is "+price);

}

//继续书店工厂

//

private static class Factory extends BookFactory //内部类的使用

{

protected book create(){

return new ChineseBook();

}

}

static { //生成1个实例后,就要把这个实例加到工厂中

System.out.println("loading ChineseBook.class");

BookFactory.addFactory("ChineseBook",new Factory()); //为什么要把工厂

//放到list中呢?便于加载一次以后可直接调用

}

}

class EnglishBook implements book //英文书

{

private String name;

private int price;

public EnglishBook(){

//this.EnglishBook("english",10);

name = "EnglisthBook";

price = 10;

}

public EnglishBook(String name,int price){

this.name = name;

this.price = price;

}

public void sayBookName(){

System.out.println("i am a english book "+name);

}

public void sayBookPrice(){

System.out.println("my price is "+price);

}

//继续书店工厂

//

private static class Factory extends BookFactory

{

protected book create(){

return new EnglishBook();

}

}

static { //生成1个实例后,就要把这个实例加到工厂中

System.out.println("loading EnglishBook.class");

BookFactory.addFactory("EnglishBook",new Factory()); //为什么要把工厂

//放到list中呢?便于加载一次以后可直接调用

}

}

abstract class BookFactory

{

protected abstract book create(); //这个方法要在具体类中实现

private static Map factories = new HashMap(); //工厂map

public static void addFactory(String id,BookFactory f)

{

//加入工厂,将书和创建书的工厂加入到map中,为什么要加入创建书的工厂呢?

//因为创建书的工厂有个create()方法,他要具体返回一个实例

System.out.println(factories.put(id,f));

}

public static final book createBook(String id){//创建书实例,书的名称作为参数,传出的是被创建好的Book的实例

if (!factories.containsKey(id))//当工厂中不包含这个类时要装载

{

try{

// Load dynamically 动态装载

Class.forName(id); //怎么加载的?只要直接执行

//这个类,类就会调用static里的语句

}catch(ClassNotFoundException e){

throw new RuntimeException("error"+id);

}

// See if it was put in 看看它是否被装载

if(!factories.containsKey(id))throw new RuntimeException("Bad shape creation: " + id);

}

return ((BookFactory)factories.get(id)).create();

}

}

public class BookFactory2

{

String bookList[] = {"EnglishBook", "ChineseBook","EnglishBook","ChineseBook","ChineseBook","EnglishBook"};

List books = new ArrayList();

public void test(){

for (int i=0;i<bookList.length;i++)

{

books.add(BookFactory.createBook(bookList));

System.out.println("already create");

}

Iterator it = books.iterator();

while(it.hasNext()){

book s = (book)it.next();

s.sayBookName();

}

}

public static void main(String args[]) {

new BookFactory2().test();

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有