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();

    }

    };

  • 相关阅读:
    暑期测试训练3
    对于在线段树上修改整段区间的理解
    UVA 11090 判负圈问题
    ZOJ 2588 求割边问题
    POJ 1523 网络连通
    hdu 1163
    hdu 1703
    hdu 2577 模拟
    hdu 3836 强连通+缩点:加边构强连通
    hdu 2571
  • 原文地址:https://www.cnblogs.com/linucos/p/2226310.html
Copyright © 2011-2022 走看看