首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

第二个设计方式:工厂方法

2012-11-01 
第二个设计模式:工厂方法?上一节中已经介绍了简单工厂,我想大家应该有一定认识了。然后简单工厂有它自身的

第二个设计模式:工厂方法
?上一节中已经介绍了简单工厂,我想大家应该有一定认识了。然后简单工厂有它自身的局限性~今天继续为大家介绍工厂模式之工厂方法?.UML示意图:第二个设计方式:工厂方法组成部分:1.抽象工厂2.具体工厂3.抽象产品4.具体产品代码例子:1.?????? 抽象工厂package com.eekq.creator.factorymethod;?public interface IFactory {??? //抽象工厂,工厂方法??? public IProduct factory();}2.?????? 抽象产品package com.eekq.creator.factorymethod;?public interface IProduct {??? //抽象产品,抽象方法??? public void print();}3.?????? 具体产品:可以有N个同类产品,在这里我以两个产品为例产品1package com.eekq.creator.factorymethod;?public class Product1 implements IProduct {???? public void print() {??????? // TODO 自动生成方法存根??????? //示例方法??????? System.out.println("Product1.print()");??? }}产品2package com.eekq.creator.factorymethod;?public class Product2 implements IProduct {???? public void print() {??????? // TODO 自动生成方法存根??????? System.out.println("Product2.print()");??? }?}4.?????? 具体工厂:针对具体产品的具体工厂,有N类产个产品就有N个具体工厂工厂1package com.eekq.creator.factorymethod;?public class Factory1 implements IFactory {???? public IProduct factory() {??????? // TODO 自动生成方法存根??????? return new Product1();??? }?}工厂2package com.eekq.creator.factorymethod;?public class Factory2 implements IFactory{???? public IProduct factory() {??????? // TODO 自动生成方法存根??????? return new Product2();??? }?}5.客户端的调用package com.eekq.creator.factorymethod;?public class Main {???? /**??? ?*@paramargs??? ?*/??? public static void main(String[] args) {??????? // TODO 自动生成方法存根??????? //工厂方法示例??????? IFactory factory = new Factory1();??????? IProduct product1 = factory.factory();//获取工厂1??????? product1.print();//执行具体产品功能??????? ??????? IFactory factory2 = new Factory2();??????? IProduct product2 = factory2.factory();//获取工厂1??????? product2.print();//执行具体产品功能???? }?}6.输出结果Product1.print()Product2.print()7.总结工厂方法模式保持了简单工厂的优点,同时克服了简单工厂的缺点。工厂方法的核心在于抽象工厂,这样如果有新的产品加入,就实现抽象工厂就可以了。这也具有了可扩展性,同时也满足了‘开-闭’原则?作者:飞行鱼 QQ:6868861 推荐J2EE群:7715552


?

热点排行