工厂模式集中封装了对象的创建,使得要更换对象时,不需要做大的改动就能实现。构造方法集中,对外隐藏了具体的构造方法,构造方法改动时更容易,便于代码维护。如果没有将构造函数集中到创建工厂里,代码里很多地方都写了某一个对象的创建,修改创建方法的时候就会修改很多处。耦合度过高,不易维护。
工厂模式分为简单工厂模式和工厂方法模式。
简单工厂模式
通过逻辑分支来判断要创建的对象,使用简单方便,但是违背了开放-封闭原则。
工厂方法模式
定义了一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
工厂方法新增创建的子类类型时,可以通过继承的方式增加创建工厂类,这样可以避免修改已有的工厂类。符合开放-封闭原则。