一.什么是工厂方法模式
工厂方法(Factory Method)模式的是定义一个创建产品对象的工厂接口或抽象方法,让子类决定实例化哪一个类。
工厂方法是一个类的实例化延迟的其子类。
因为每一个具体产品类对应着一个具体的工厂类,故增加具体产品时只需要增加一个具体工厂类.。
工厂方法模式是简单工厂模式的进一步抽象和推广,克服了简单工厂的违背开放-封闭原则的缺点,
又保持了封装对象创建过程的优点。
工厂方法模式与简单工厂模式的区别
在于工厂方法模式比简单工厂模式多出一个抽象工厂接口,每一个具体工厂实现某个具体产品的实现。
比如生成每本书都需要许多信息,书名,出版社,生成时间和生成顺序,但是不同的书籍信息要求不确定。
二.工厂模式的例子
最终运行结果
Book
Java_Book
bookfactory
JavaBookFactory
测试类
三.工厂方法的优势
通过接口规定每个具体工厂需要实现的方法,不需要考虑具体产品如何生成,将生成具体产品的细节放到具体工厂中取实现。
当工厂生成产品需要更多的配置信息,将所有产品所需的配置信息都放在简单工厂中太过杂乱,也不便于代码维护
将生成某个产品的信息抽取出来,单独放到一个类中,每个具体工厂对应某个具体产品,使得具体工厂的职能更加单一,代码简洁。
使信息局部化,降低了类的复杂性,变更引起的风险降低。