设计模式学习每日一记(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();

}

};

原文地址:https://www.cnblogs.com/linucos/p/2226310.html