抽象工厂方法-《java与模式》
下面内容摘自《java与模式》
如果每个抽象产品都有多于一个的具体子类,那么抽象工厂就可以提供多个具体工厂角色,分泌对应于相应的具体产品角色,即每个具体工厂类负责创建抽象产品的某个具体子类的实例。
“抽象工厂”---“抽象”来自“抽象产品角色”,而“抽象工厂”就是抽象产品角色的工厂。
抽象工厂模式面对的问题是多个产品等级结构的系统设计的。
抽象工厂模式与工厂方法模式的最大区别就在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则需要面对多个产品等级结构。
注意第二条,即系统只消费其中某一族的产品。抽象工厂模式的起源:
相关的模式
1:具体工厂类可以设计成单例类(单例模式)
2:抽象工厂类可以配备静态方法,以返还具体工厂的实例。具体地讲,抽象工厂角色可以配备一个静态方法,这个方法按照参数的值,返回所对应的具体该ing从的实例。静态方法返回的类型是抽象工厂类型,这样可以在多态性的保证之下,允许静态工厂方法自行决定哪一个具体工厂符合要求。
3:也可以为每一个具体工厂类配备一个静态方法,而其返回类型是该具体工厂类自己。