幸福清扬

之技术学习

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
之前对抽象工厂模式理解不透彻,困惑,看了李建忠的讲解,收获如下:

        1、单纯从GoF的定义,并不能理解其用意;
   
        2、要从动机去理解,这里有两点:

        一系列相互依赖的对象的创建
        由于需求的变化,存在更多系列对象的创建。

    ------------------------------------------------------------

    李建忠总结要点如下:

    1、如果没有应对“多系列对象构建”的需求变化,则没有必要用抽象工厂模式,这时候使用简单工厂完全可以了。

    2、系列对象指的是这些对象之间有相互依赖或作用的关系。

    3、abstract factory的缺点是难以应对“新对象”的创建,也就是在这一系列的对象确定下来之后,最好就不变了,只是增加不同系列的这些对象,这是其优势所在,如果增减了对象,对该模式反而是灾难。

    ------------------------------------------------------------

    另外个人觉得其引入思路比较好:

    首先是,没有变化,不需要额外封装;
    如果有了变化,哪里有变化,就封装哪里;
    这里抽象工厂模式应对的是对象创建有变化,那就封装对象创建。
    为了实现不依赖于new,出现了工厂,让工厂统一创建对象;
    为了实现对象实例不依赖于具体对象类,出现了抽象对象类,所有具体的对象类都继承于该抽象类。
    同理,为了产生不同系列的对象,需要不同的工厂,那么就可以抽象一个抽象工厂,让所有具体工厂继承于抽象工长,如此一来,客户程序就只依赖于抽象类,并能应对变化了。
    变化不会消失,只会转移,变化到哪去了呢?对抽象工厂的赋值,这里是逃不掉的。

    ------------------------------------------------------------

    最后还是引出GoF的定义:

    提供一个接口,让该接口负责创建一系列“相关或则相互依赖的对象”,而无需指定它们具体的类。
                        ——《设计模式》GoF

    以及其UML图
   
抽象工厂模式


posted on 2008-06-26 09:59  杨连国  阅读(310)  评论(0编辑  收藏  举报