工厂方法模式: 定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类
与简单工厂模式的区别: 简单工厂模式是在一个工厂类供根据不同的选择条件来创建不同的实例化。而工厂方法模式则是对每一个待实例化的类都增加一个对应的工厂类。
注: 简单工厂如果新增加一个类,需要修改工厂类,不符合开放-封闭原则,即对扩展开放,对修改封闭
类图:
代码: 相比简单工厂模式增加了几个工厂类
public interface IFactory {
Shape createShape();
}
public class CircleFactory implements IFactory {
@Override
public Shape createShape() {
return new Circle();
}
}