抽象工厂-产品系列,避免太多的工厂类
普通工厂-单个产品
Spring-从配置文件中读取类
Factory Method
面向对象思想:抽象,封装,继承,委托,多态,针对接口编程
抽象类、接口: Product Creator
具体实现: ConcreteProduct ConcreteCreator
两个好处:
一、接口与实现分离, 增加了代码的复用性和可扩展性(添加新的具体产品类和具体创建类),这是客户端不用改变,体现了良好的封装性和委托性。
二、由Creator中的factory Method() 来创建对象,将客户端与对象的创建过程分离出来,,客户不用操心返回的是那一个具体的产品,也不用关心这些产品是如何创建的。
参数化工厂方法(Parameterized Factory Method)
依靠在Creator中指定参数来创建对象,可以减少ConcreteCreator