设计模式的理解之(虚拟工厂模式)

定义:

    创建一系统相互依赖或关联的接口,不用指定具体的类。

俗语:

    比如要构建一个大类,这个类的功能又由许多子类组成,而这些子类又有各自的不同功能的版本。这时,可考虑用虚拟工厂模式。

例子:

    要组装生产电脑。电脑由硬盘、内存、CPU、主板、电源等部件组成。这些部件就是我们定义的子类。因为各个部件(子类)的品牌,规则各异。如果为每一个部件创建一个独立的类那会使得组装起来很杂乱,而且强烈依赖每个具体的部件,如果某个部件丢失,则影响整台电脑的生成。所以,要解决这类问题,就需要创建一个抽象工厂,该工厂的功能是创建硬盘、内存、cpu等。这里大家可能发现,没有指定具体的品牌。对,是这样的。优点就是这里,这里第一个部件都有一个抽象的父类。具体的品牌,规格的部件都继承他们的父类实现。因此,可以重头理解为:抽象工厂的功能是创建各个抽象的部件类。

   然后具体的电脑品牌生产工厂类继承抽象工厂类,它负责生产具体的品牌部件。这样,以后部件品种增加或减少不会直接影响到整个工厂。

类:

   abstractFactory(抽象工厂)-->IBMComputerFactory(IBM工厂)

   AbstractKeyboard(抽象键盘)-->IBMKeyboard(IBM键盘)

   AbstractCPU(抽象CPU)-->ARMCpu(ARMCpu类)

  。。。。。。

 

 具体的工厂负责具体部件的创建工作,最后返回该品牌的电脑。

 以上只是个例子,还可以有无数变化。当然最关键是如何在实际开发中运用,这首先需要熟记并理解该方法的用途,再结合实际需求进行分析,先把功能分清楚,再把功能属于哪个模块区分出来,最后开始考虑用什么方法实现。

posted @ 2011-12-01 11:50  你的影子  阅读(1612)  评论(0编辑  收藏  举报