3.工厂模式----Head First(设计模式进阶)

简单工厂模式

简单工厂模式相对简单,我们只需要将生产不同产品的逻辑放入工厂类中,当需要生产产品的时候只需要传入类型,工厂就会生产对应的产品对象

public class SimpleFactory {


    public Piazza creatPizza(String type){
        Piazza piazza=null;
        if ("cheese".equals(type)){
            piazza=new CheesePizza();
        }else if ("clam".equals(type)){
            piazza=new ClamPizza();
        }
        return piazza;
    }
}

简单工厂就是把变化封装在了工厂类中,这样就不需要修改其他的代码(指客户端),只需要修改工厂代码就好了.当然,这就是弊端所在,开放了修改,违背了开放-封闭原则.

工厂方法模式

工厂方法模式是将工厂抽象成接口,不同的产品对应一个具体的工厂,这样,如果增加一个新的产品,就只需要增加一个产品类,和对应的一个工厂就行了,但是客户端就要承担起选择哪个工厂生产产品的任务.

抽象工厂模式

3.工厂模式----Head First(设计模式进阶)_第1张图片

工厂方法模式引入工厂等级结构,解决了简单工厂模式中工厂类职责过重的问题,但由于工厂方法模式中每个工厂只创建一类具体类的对象,这将会导致系统当中的工厂类过多,这势必会增加系统的开销。此时,我们可以考虑将一些相关的具体类组成一个“具体类族”,由同一个工厂来统一生产,这就是我们本文要说的“抽象工厂模式”的基本思想。
也就是工厂方法模式是一个工厂生产一个产品,那么就会有多个工厂,我们可以将一系列类群让同一个工厂去生产,譬如:qq换皮肤的时候,每套皮肤有包括颜色,图标形状啊等,这样每套都可以是由一个工厂来生产,只不过会在工厂中添加生产不同产品的方法而已,也就是原先工厂只有一个生产产品的方法,现在是多个.

你可能感兴趣的:(简单工厂模式,工厂方法模式,抽象工厂模式,工厂模式,设计模式,设计模式进阶)