抽象工厂模式的实例,在这个实例下,主要是以动物来讲解分析抽象工厂模式下的用处和使用时机,优点和缺点。
一、概念
抽象工厂和工厂方法模式基本一样,只不过它可以把两个或者多个相同结构不同类型的产品通过一个工厂生产出来,例如摩托上的螺丝和螺母,这两样东西虽然是不一样的物体,但它们有联系,就是谁都离不开谁,如果不能组合在一起使用就是废品,像这样的事物我们可以通过一个工厂来创建,这样可以减少工厂的数量,减少代码量。
这里举的例子是:启用不同地区的动物,例如亚洲的动物和美洲的动物,也就是说亚洲的动物是有联系的,所以通过亚洲的 动物工厂来创建所有的亚洲动物,通过美洲的动物工厂来创建所以美洲的动物,这样职责就清晰了,如果相同的产品太多,依这个例子就是如果亚洲动物太多,你可以瓜分亚洲动物工厂,根据亚洲不同的种族来减小工厂,如果还太大,可以根据不同省市来瓜分,总之你可以利用前面所学的工厂方法来瓜分。
二、使用时机
前提是在工厂方法模式中,对于一组要创建的产品中,如果有一些相关联的产品可以由一个工厂来创建,目的就是减少工厂的数量,记住是结构相似的不同类型。例如鱼类和鸟类,所有的鱼结构相同但类型不同,你可以建立两个工厂来创建鱼类和鸟类,如果工厂很大,可继续瓜分工厂,使用工厂方法模式。减少抽象性。
三、优点和缺点
优点:可以通过一个工厂来创建多个不同结构相同类型的产品,减少了工厂的数量,通过一个工厂来创建多个产品有利于对产品细节的了解。
缺点:必须是两个有联系的产品才可以,如果不是是不可以使用工厂方法模式的。而且如果增加了一个有关联的产品修改起来很麻烦,你需要修改抽象工厂,和实际的工厂。不利于维护。
四、codeDemo
工厂模式由 抽象工厂,实际工厂,抽象产品和实际产品组成。这里没有写出,你可以看下面的简单工厂模式中的代码。
|