抽象工厂的好处很明显,易于交换产品系列,由于具体工厂类,在一个应用中只需要在初始化的时候出现一次,这就使得改变一个应用的具体工厂变得非常容易,它只需要改变具体工厂即可使用不同的产品配置。它让具体的创建实例过程与客户端分离,客户端是通过它们的抽象接口操纵实例,产品的具体类名也被具体工厂的实现分离,不会出现在客户代码中。
缺点是增加功能时,需要改动很多地方,感觉不符合封闭-开放原则。
优化的方法是用简单工厂方法来改良,但又会出现多支选择的问题,再利用反射技术可以使代码优化到极致。
抽象工厂的好处很明显,易于交换产品系列,由于具体工厂类,在一个应用中只需要在初始化的时候出现一次,这就使得改变一个应用的具体工厂变得非常容易,它只需要改变具体工厂即可使用不同的产品配置。它让具体的创建实例过程与客户端分离,客户端是通过它们的抽象接口操纵实例,产品的具体类名也被具体工厂的实现分离,不会出现在客户代码中。
缺点是增加功能时,需要改动很多地方,感觉不符合封闭-开放原则。
优化的方法是用简单工厂方法来改良,但又会出现多支选择的问题,再利用反射技术可以使代码优化到极致。