引入
- 用开披萨店来引入,首先,披萨的制作过程基本固定,然而,披萨的种类不同,针对不同披萨的详细情况也不同。
- 所以可能有很多种pizza对象,但是都需要可以被调用做披萨这个方法。
解决方案
- 首先,用抽象类pizzastore对象规范化所有pizza的行为,在制作披萨pizza这里,使用一个统一的模板方法接收的代表pizza对象的string,创建好对象之后对其进行一系列规范化的操作。确保所有的子类披萨店方法都是以这样的方式来制作pizza。
- 然后,使用一个抽象方法createPizza,就想上面提到的那样,目的是接收字符串,返回制作好的pizza实例,当然这里不作实现,由子类经由自己的实现,作出符合自己需求的pizza生成代码。
public abstract class Pizzastore{
//这里就是公共的点披萨之后处理披萨的方法处,在抽象方法里就定义好就是为了确保所有子类在处理点的披萨的时候的步骤的一致性
public Pizza orderPizza(String type){
Pizza pizza;
pizza=createPizza(type);
pizza.prepare();
pizza.bake();
pizza.cut();
pizza.box();
return pizza;
}
abstract Pizza createPizza(String type);
}
工厂方法介绍其一
其二
简单工厂和工厂方法的区别在于,简单工厂是在一个工厂类里面,把所有东西都处理好了,而工厂方法是定义一个框架出来,由继承了工厂方法的子类去决定具体的实现
这张蛮重要的,点明了无论是高层还是低层的组件,都不应有指定的相互依赖关系,而都应该依赖于抽象类
抽象工厂一般是用于实例化一组相关的类的,先定义好工厂原料的公用属性,再在具体创建需要这些属性的具体类的时候将工厂以参数的形式传入