admin 發表於 2019-8-28 18:13:22

设计模式之工厂模式-工厂方法模式

要便利披萨品种的扩大、要便于保护、要能运行时辰便利扩大

来看看披萨族设计:

司小司颠末阐发获得:披萨都必要烘焙(bake)、切割(cut)、包装(box)另有就是披萨原质料筹备(prepare)。此中变革的就是prepare筹备的原质料。分歧披萨的原质料分歧,可是都必要举行烘焙、切割、包装。以是,咱们这里原质料法子就做抽象的,不详细实现了。颠末阐发以后获得以下类图:

第一次设计:利用简略工场模式(可以参考上一篇的司小司面馆项目)发明不可。为甚么呢?

跟着披萨愈来愈火,不少处所都要加盟了。若是加盟的话,每一个处所都要建立一个简略工场模式那样,一样的代码,就要建立不少份,在保护的时辰,就很贫苦的。

选择第二种设计:工场法子模式。

先来看看项目布局:

阐明:

1:domain:是详细pojo工具。都担当于PizzaAbstract类

此中以BeiJin开首的,都是北京连锁樹林借款,店的。以ShanHai开首的都是上海连锁店的。

2和3是披萨和披萨定单的抽象类

4:详细连锁点的定单类。都担当于PiazzOrderAbstract类

5:测试类

咱们先来看看两个抽象类。

PizzaAbstract类:

PizzaOrderAbstract类:

在来看一个北京的greekpizza:

在来看看BeiJinOrderPizza:

测试类:

检察运行成果:

经由过程上面代码演示,咱们可以获得如下:

工场法子模式设计方案:

将披萨项目里的披萨工具实例化功效抽象成抽象法子,在分歧加盟店详细实现功效。

工场法子模式:

界说了一个建立工具的抽象法子,由子类决议要实例化的类。从这句话中,咱们可以晓得,工场法子模式是将工具的实例化(建立)推延到子类中了。

工场法子模式和简略工场模式比拟:

简略工场模式:

按照类的标识,经由过程工场工具便可以获得详细类的实例工具了。在工场工具内里,类工具的实例化以下肉丸机,:

工具的实例化,是在工场工具内里。

工场法子模式:

是将工具的建立,抽掏出来了。就是建立披萨的法子,抽取到一个详细的类中。

咱们在来看看,披萨定单工具:

在详细挪用的时辰:

PizzaOrderAbstract bjOder = new BeiJinOrderPizza();挪用详细的子类。

而工具的实例化,是在子类中举行的。

工场法子模式经由过程一个抽象的工场类来建立工场,再由工场经由过程必定的法子缔造必定的新北市當舖,工具,如许若是有新的产C呈现不必要点窜已有代码只要新建一个产物的从子类和工场的子类便可以啦。
頁: [1]
查看完整版本: 设计模式之工厂模式-工厂方法模式