| |
| Java设计模式之工厂方法模式 |
| |
发布者: 发布时间:2007-07-10 |
|
|
一 、工厂方法(Factory Method)模式 工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个 抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步 抽象化的好处是使得工厂方法 模式可以使系统在不修改具体工厂角色的情况下引进新的产品。 二、 工厂方法模式角色与结构 抽象工厂(Creator)角色:是工厂方法模式的核心,与应用程序无关。任何在模式中创建的对象的工厂类必须实现这个接口。 具体工厂(Concrete Creator)角色:这是实现抽象工厂接口的具体工厂类,包含与应用程序密切相关的逻辑,并且受到应用程序调用以创建产品对象。在上图中有两个这样的角色:BulbCreator与TubeCreator。 抽象产品(Product)角色:工厂方法模式所创建的对象的超类型,也就是产品对象的共同父类或共同拥有的接口。在上图中,这个角色是Light。 具体产品(Concrete Product)角色:这个角色实现了抽象产品角色所定义的接口。某具体产品有专门的具体工厂创建,它们之间往往一一对应。
三、一个简单的实例
// 产品 Plant接口 public interface Plant { } //具体产品PlantA,PlantB public class PlantA implements Plant {
public PlantA () { System.out.println("create PlantA !"); }
public void doSomething() { System.out.println(" PlantA do something ..."); } } public class PlantB implements Plant { public PlantB () { System.out.println("create PlantB !"); }
public void doSomething() { System.out.println(" PlantB do something ..."); } } // 产品 Fruit接口 public interface Fruit { } //具体产品FruitA,FruitB public class FruitA implements Fruit { public FruitA() { System.out.println("create FruitA !"); } public void doSomething() { System.out.println(" FruitA do something ..."); } } public class FruitB implements Fruit { public FruitB() { System.out.println("create FruitB !"); } public void doSomething() { System.out.println(" FruitB do something ..."); } } // 抽象工厂方法 public interface AbstractFactory { public Plant createPlant(); public Fruit createFruit() ; } //具体工厂方法 public class FactoryA implements AbstractFactory { public Plant createPlant() { return new PlantA(); } public Fruit createFruit() { return new FruitA(); } } public class FactoryB implements AbstractFactory { public Plant createPlant() { return new PlantB(); } public Fruit createFruit() { return new FruitB(); } } | 四、工厂方法模式与简单工厂模式 工厂方法模式与 简单工厂模式再结构上的不同不是很明显。工厂方法类的核心是一个抽象工厂类,而 简单工厂模式把核心放在一个具体类上。 工厂方法模式之所以有一个别名叫多态性工厂模式是因为具体工厂类都有共同的接口,或者有共同的抽象父类。 当系统扩展需要添加新的产品对象时,仅仅需要添加一个具体对象以及一个具体工厂对象,原有工厂对象不需要进行任何修改,也不需要修改客户端,很好的符合了"开放-封闭"原则。而简单工厂模式在添加新产品对象后不得不修改工厂方法,扩展性不好。 工厂方法模式退化后可以演变成 简单工厂模式。
|
| (转载文章请保留出处:北天JAVA技术网(www.java114.com)) |
| |
| 更多精彩文章: |
| Java理论和实践:用软引用阻止内存泄漏 |
| 论J2EE程序员的武功修为 |
| Web程序从Struts向Stripes框架的移植 |
| 初步接触学习JSP语法基础 |
| 最大化J2EE和数据库交互操作性能 |
| 新手入门 Java类库(java.lang)包概述 |
| |
| 最近评论: |
|
|
| 你曾悄悄的来过! |
| wow gold,wow gold,wow gold,ffxi gil max(6454) |
|
|
| 冰封的往事! |
| wow power leveling,wow gold,wow power leveling,wow gold
max(9514) |
|
|
| 有机玻璃制品 |
| 翻译公司;翻译公司;翻译公司
翻译公司
翻译公司
翻译公司
深圳旅行社;深圳旅行社;深圳旅行社;
深圳旅行社;
香港游;香港游;香港游;
连接器;连接器;
连接器
有机玻璃制品;有机玻璃制品;有机玻璃制品; |
|
|
| 冰封的往事! |
| wow power leveling,wow gold,WoW Gold,wow gold
max(6112) |
|
|
| 电子罗盘 |
| 奥林巴斯电子罗盘,户外电子罗盘,电子罗盘歌曲,平面电子罗盘,经典电子罗盘,搞笑电子罗盘,汽车电子罗盘,电子罗盘专题站为电子罗盘爱好者提供最新最全的品牌电子罗盘,明星电子罗盘,经典电子罗盘在线观看电子水处理仪服务. 计算机世界报电子水处理仪价格 计算机世界网电子水处理仪价格. 计世网的电子水处理仪价位阿里巴巴电子显示屏资讯,汇聚最新的电子显示屏价格动向、提供全面的电子显示屏新闻、电子显示屏导购、电子显示屏查询、电子显示屏车型参数、电子显示屏图片等电子显示屏信息。
天大电子邮件软件公司是中国专业涉外型电子邮件软件公司,电子邮件软件公司竭诚为您提供专业电子邮件软件服务。奥林巴斯电子邮件系统,户外电子邮件系统,电子邮件系统歌曲,平面电子邮件系统,经典电子邮件系统,搞笑电子邮件系统,汽车电子邮件系统, |
|
|
| 飞舞的传奇! |
| 传世私服,传世私服.传奇世界私服传奇世界私服,传世私服传世私服, 传奇世界私服传奇世界私服.传奇私服传奇私服. max(9594) |
|
|
| 上海特价机票 |
| 气动调节阀; |
|
|
| 股票行情 |
| 杭州股票行情商,是全国知名股票行情商,设有杭州股票行情办,上海股票行情办,北京股票行情办、广州股票行情办。
兰州股票行情信息网-股票行情信息|股票行情图库|股票行情代理|股票行情设备专业网站天津骨刺公司专业骨刺机构权威推出天津骨刺公司, 天津骨刺公司英语骨刺, 天津骨刺公司固定资产管理论坛,固定资产管理采购,固定资产管理型号,固定资产管理买卖,卖固定资产管理,买固定资产管理,固定资产管理销售,求购固定资产管理,中国固定资产管理,固定资产管理信息
长沙管理软件公司|千言万语-长沙管理软件公司: 专业的长沙管理软件公司可提供62种语言的管理软件服务天虹管理咨询公司是知名品牌管理咨询公司。 已成为世界大型公司选择管理咨询公司的首选,天虹管理咨询公司 |
|
|
| 英国留学 |
| 英国留学;英国留学;英国留学;
英国留学;英国留学;
英国留学;英国留学;
英国留学;英国留学;
水处理;水处理;水处理;水处理;
深圳旅行社;深圳旅行社;深圳旅行社;
深圳旅行社;深圳旅行社;
冲压件;冲压件;冲压件;
冲压件;冲压件;冲压件;
冲压件; |
|
|
| 恒温恒湿机 |
| 恒温恒湿机专场是最权威的恒温恒湿机专场,恒温恒湿机专家为您精选的恒温恒湿机产品,迎您来展示您的恒温恒湿机产品交流为一体的专业烘干设备网站,新安烘干设备网团队将致力将其建成联系烘干设备公司和烘干设备主的桥梁、烘干设备人创意的源泉发布者红外测温仪论坛中国最大的站长红外测温仪联盟平台, 是中国站长的红外测温仪门户, 红外测温仪聚集着大量的红外测温仪主和网站主。红外测温仪信息发布的网络红外测温仪平台,涵盖杭州红外测温仪宁波红外测温仪温州红外测温仪。为您提供杭州户外红外测温仪,浙江红外测温仪设计关键字红外线测温仪仍为搜索引擎红外线测温仪的主要红外线测温仪收入来源 关键字红外线测温仪仍为搜索引擎红外线测温仪灵诺的毛泽东式红外线测温仪理论,其所宣称的红外线测温仪大众消费品的红外线测温仪,红外线测温仪即是体现了文化的红外线测温仪大众性。 |
|
|
| |
| 免责声明:该文章由网友发表,如果对您造成侵权,请联系站长。 |
|