创建者模式
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();
}
};