工厂模式
第四个模式:工厂模式
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()就会接着烘烤,切片,装盒。
现在引入工厂方法模式:
工厂方法模式:提供了一个接口,用于创建相关或者依赖对象的家族,而不需要明确指定具体类
如下图是工厂方法模式的类图: