码迷,mamicode.com
首页 > 其他好文 > 详细

工厂模式

时间:2015-05-14 17:53:10      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:

第四个模式:工厂模式

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

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

技术分享

技术分享

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

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工厂方法模式

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

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

技术分享

 

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

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

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

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

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

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

具体如下:

技术分享

技术分享

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

技术分享

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

技术分享

 

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

技术分享

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

技术分享

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

技术分享

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

现在引入工厂方法模式:

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

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

技术分享

工厂模式

标签:

原文地址:http://www.cnblogs.com/maverick-fu/p/4503624.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!