工厂模式

第四个模式:工厂模式

4.1写在前面:定义简单工厂模式

简单工厂不是一个设计模式,反而比较像是一种编程习惯。

wpsB163.tmp

wpsEBC5.tmp

看看如何根据订单生产这些披萨的:

1.先看看Ethan的订单:我们首先需要一个纽约披萨店:

   PizzaStore nypizzastore = new NYPizzaStore();

2.现在有了一个店,可以下单了:

   nyPizzaStore.orderPizza(“cheese”);

3.orderPizza()方法于是调用了createPizza()方法:

  Pizza pizza = createPizza(“cheese”);

4.最后,披萨必须经过下列的处理才算完成orderPizza():

pizza.prepare();

pizza.bake();

pizza.cut();

pizza.box();

同时,我们要注意要创建披萨本身!!

4.2工厂方法模式

工厂方法模式:通过让子类决定创建的对象是什么,来达到将对象创建的过程封装的目的。

如下图所示,是工厂方法模式的类图:

wps8D04.tmp

 

如果不采用工厂方法模式,对与这个披萨店问题,就会产生很多的具体类依赖!!这是不正确的习惯。。

设计原则:要依赖抽象,不要依赖具体类。

下面的知道方针,能帮你避免在OO设计中违反依赖倒置原则:

1.变量不可以持用具体累的引用

2.不能让类派生自具体类

3.不要覆盖基类中已经实现的方法

具体如下:

wpsF6D.tmp

wps4C10.tmp

1.首先我们需要一个纽约披萨店:

wpsA8FF.tmp

2.现在有了披萨点,就可以接受订单了:

wpsFFC7.tmp

 

3.orderPizza()方法首先调用createPizza()方法:

wpsC92E.tmp

4.当createPizza()方法被调用时,就涉及到原料工厂了:

wps2D2F.tmp

5.接下来需要准备Pizza,一旦调用了prepare()方法,工厂将被要求准备原料:

wpsF1A7.tmp

6.最后我们得到了准备好的Pizza,orderPizza()就会接着烘烤,切片,装盒。

现在引入工厂方法模式:

工厂方法模式:提供了一个接口,用于创建相关或者依赖对象的家族,而不需要明确指定具体类

如下图是工厂方法模式的类图:

wps6004.tmp

posted @ 2015-05-14 16:13  maverick_fu  阅读(200)  评论(0编辑  收藏  举报