Abstract Factory(抽象工厂)模式,故名思意就是关于生产或创建的模式,生产创建什么呢?当然是对象啦。
某行业权威部门出台一个标准,说开办××厂生产的××产品必须由某些部件构成,而这些部件又必须符合某些标准。各厂家可以生产自己品牌的部件和最终产品。
于是办厂的人就严格按照标准来,按照生产所有部件的设备,各自生产所有部件,贴上自己的牌子。
客户只要向某一厂家订购产品,就可以得到完整一套的该品牌的产品,而不需要自己买来各部件自己组装。方便了客户。
这里,办厂的标准即是抽象工厂类;每一个部件的标准都是抽象产品类。抽象工厂类规定了生产所有部件的接口,而其生产的所有的部件都是抽象产品。
各厂家即是具体工厂,继承自抽象工厂,就是说各家厂商都生产标准上规定的各种产品,但是其生产的产品又都是自己的品牌,就是说其生产的每一种产品又都继承自相应的抽象产品类但有自己的实现,称为具体产品。
这样客户只要使用某一个具体产品类的对象即可以得到一整套这个厂家品牌的产品。
但是,突然又一天,权威说这个标准要改一改了,××产品要加上××部件,不然不能上市。这下麻烦了,各厂家就都要再引进生产该部件的设备。这就是工厂模式的缺点之一,就是说如果修改抽象工厂的接口那么所有的具体工厂类则都要修改。