简单工厂模式
定义:
定义一个工厂类用来决定实例化哪个实例对象。
特点:
客户端和具体算法解耦,在扩展上只需要增加新的子类和添加工厂的判断逻辑即可,把改动和逻辑判断放到工厂类来完成。
示例:
计算器示例:
工厂方法模式(Factory Method)
定义:
定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
特点:
产品和工厂都抽象,具体的产品有具体的工厂去实例化。工厂方法模式实现时,客户端需要决定实例化哪一个工厂来实现运算类,选择判断的问题又交给了客户端。也就是说,工厂方法模式将简单工厂模式的内部逻辑判断又移到了客户端代码来进行。要添加功能,本来修改工厂类,现在改客户端。
示例: