1)简单工厂(不是模式)
简单工厂只是一种变成习惯,并非23种设计模式之一。
简单工厂提供将实例话那种类型留给运行时判断,而非编译时指定。简单工厂模式就是由一个工厂类根据传入的参数决定创建出哪一个类的实例。
可以将客户程序从具体类解耦。
角色:
工厂类:接收参数,返回参数指定的类的实例。
抽象产品:返回实例的类型,具体产品的基类。
具体产品:继承自抽象产品的类。
2)工厂方法模式
沿着上面的思路,创建的接口是稳定的,但是创建对象剧烈变化。将稳定的接口抽象成基类,让子类确定实例哪个产品,将实际创建工作推迟到子类中。
工厂方法用来处理对象的创建,并将这样的创建封装在子类中。这样客户程序中关于基类的代码就和子类对象创建解耦了。
工厂方法模式定义了一个创建对象的接口,但由子类去决定要实例化的是哪一个。工厂方法让类把实例化推辞到子类。
依赖倒置原则(Dependency Inversion Principle):设计时依赖抽象,减少对具体类的依赖。
角色:
抽象工厂类:声明生成一系列抽象产品的方法
具体工厂类:生成具体的产品
抽象产品:抽象产品
具体产品:具体产品类
3)抽象工厂类
再进一步演化,提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。