4工厂方法模式

图片来自head first 设计模式,仅供学习之用

一直没有体会到工厂方法的实际意义,因为我对工厂方法的理解还不够,就是没有实际写过代码,因为平时写代码都是直接new,体会不到工厂方法模式的作用。

当代码使用大量的具体类时,需要考虑工厂方法模式了。

head first 里的依赖倒置原则我不是很懂

首先关于工厂有三个模式,分别是简单工厂模式,工厂方法模式,抽象工厂模式,我把这三个概念混淆了,把工厂方法当成简单工厂,把抽象工厂当成工厂方法= =(貌似我经常犯这种张冠李戴的错误。。)可怜的简单工厂模式被我给忽略了。

简单工厂模式

public class SimplePizzaFactory {
    public Pizza createPizza(String type){
        Pizza pizza=null;
        if(type.equals("cheese")){
            pizza=new CheesePizza();
        }
        else if(type.equals("greek")){
            pizza=new GreekPizza();
        }
        else if (type.equals("pepperoni")){
            pizza=new PepperoniPizza();
        }
        return pizza;
    }
}

直接提取产生对象的代码到一个工厂类中: ) 几乎不能定制

工厂方法模式

public abstract class PizzaStore {

    public Pizza orderPizza(String type){
        Pizza pizza=null;
        pizza=createPizza(type);
        pizza.prepare();
        pizza.bake();
        pizza.cut();
        pizza.box();
        return pizza;
    }
    protected abstract Pizza createPizza(String type);//披萨实例化的责任移动到一个方法中,这个方法就如同一个工厂
}

工厂方法模式是通过子类实现,所以产品和工厂都是抽象的。

工厂方法的情景是多种产品,多种工厂,达到的效果是可以很方便的增加或删除工厂和产品

原文地址:https://www.cnblogs.com/MalcolmMeng/p/8780244.html