zoukankan      html  css  js  c++  java
  • 设计模式学习每日一记(5.创建者模式)

    创建者模式

    A.定义:

    将一个复杂对象的创建过程和表示分离,使相同的创建过程可以构造不同的表示.

    B.定义分析:

    "将一个复杂对象的创建过程和表示分离,使相同的创建过程可以构造不同的表示."我们假设一个对象很复杂,组成部分很多分别为PA,PB,PC,PD.

    "将一个复杂对象创建过程和表示分离,使相同的创建过程可以构造不同的表示."我们建设创建接口分别为BuildPA, BuildPB, BuildPC,BuildPD,且每个部分都有多种原料选择.我们说的原料比如颜色,就是“表示”.创建过程就是BuildPx的接口一次调用,这个过程永远不变.创建者模式就是让这不变的过程能和每个部分创建的结果分离,也即是解耦.

    "将一个复杂对象创建过程和表示分离使相同的创建过程可以构造不同的表示."解耦之后,相同的创建过程就能有不同的表示了.

    C.问题

    (1)具体怎么样解耦呢?

    设置一个director角色,负责组织builder过程.这个过程永远不变.

    class director{

    build_product(){

    builder.BuildPA();

    builder.BuildPB();

    builder.BuildPC();

    builder.BuildPD();

    }

    };

    而builder本身有BuildPx这样的四个接口,但是不自己实现,让子类来实现.不同的子类就代表着不同的表示和组装方式.

    class builder{

    BuildPA();

    BuildPB();

    BuildPC();

    BuildPD();

    };

     比如:redColorBuilder构建PA的时候使用了red color.

    class redColorBuilder : public builder {

    BuildPA()

    {

       setRedColor();

    }

    };

  • 相关阅读:
    NSArray的几个方法的简单使用
    内存管理常用知识点总结
    iOS是开发之 对数组中的元素排序后输出
    iOS开发之——单例的几种设计方式
    图论二:图的存储
    图论一:基本概念
    树状数组(hdu-4325,hdu-1166,pat-1057)
    pat1079+1086+1090+1094(树的遍历)感想
    pat 甲级 1086(树的遍历||建树)
    static关键字的功能
  • 原文地址:https://www.cnblogs.com/linucos/p/2226310.html
Copyright © 2011-2022 走看看