提供一个用于创建相关或依赖对象的接口,而无需指定其具体类。
Dragon公司的业务受到轰炸,而CEO希望特许所有海外分支机构的专营权。他首先要注意的问题是如何确保产品质量。他们不希望特许经营者削减成本和使用低质量的组件。低质量的玩具肯定会破坏Dragon品牌的声誉。因此,CEO希望将业务特许经营,但他们仍然希望每个地方都有工厂来提供组件。开发人员聚集起来,开始集思广益。玩具使用三种类型的组件。发动机,车轮和动叶片。例如,一辆玩具车需要一个发动机和四个轮,而玩具直升机则需要一个动叶片和一个发动机。
让我们首先创建一个抽象工厂类,它是所有具体工厂的基础。请注意,抽象工厂实质上由一组工厂方法组成:
然后创建一个特定于地方的工厂(用于创建混凝土组件的混凝土工厂)。让我们为纽约创建一个:
玩具类()也需要修改。需要阐明发动机,车轮和转子叶片,并且函数需要抽象出来(此方法将由具体类来实现。在实现中,子类使用其特定于地方的c抽象工厂类()来创建具体组件)。修改玩具类()如下:
接下来,让我们修改类和类来实现方法:
最后,需要修改具体的的工厂方法。在此处添加特定于地方的ComponensFactory。让我们完成的代码:
现在,每个特许经营的专营权,都由Dragon公司总部控制的部件工厂来提供部件。
在这节中,我们建立以一个特许经营的框架,使Dragon公司拥有控制权,并未每个特许经营者提供足够的自由来做他们擅长的事情。
领取专属 10元无门槛券
私享最新 技术干货