Builder模式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Builder模式相关的知识,希望对你有一定的参考价值。
Builder模式
创建型
动机
在软件系统中,有时候面临一个"复杂对象"的创建工作,其通常由各个部分的子对象用一定算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合到一起的算法却相对稳定.
与抽象工厂不同的是,他只创建一个对象,只是把创建过程分开了.同时需要一个客户程序来指挥创建过程(先创建什么部分,创建几个).抽象工厂的对象是相互之间是有关系的(引用),Builder中创建各个部分组成一个整体对象.
意图
将一个复杂对象的构建与其表示相分离,使得同样的构建过程可以创建不同的表示(变化)
例子
//创造器(抽象)
public abstract class Builder
{
public abstract void BuildDoor();
public abstract void BuildWall();
public abstract void BuildWindows();
public abstract void BuildFloor();
public abstract void BuildHouseCeiling();
public abstract House GetHouse();
}
//最终的产品(抽象)
public abstract class House{
}
//指挥者
public class Director
{
public void Construct(Builder builder)
{
//"组合到一起的算法/创建算法"是稳定的
//顺序和数量等都是可定制的
builder.BuildWall();builder.BuildWall();
builder.BuildHouseCeiling();
builder.BuildDoor();
builder.BuildWindows();
builder.BuildFloor();
}
}
public static void Main(){
//可以采取动态的方式,修改构造函数构造的创造器
Director direc=new Director(new MyBuilder());
}
要点
- 用于构建分步骤构建一个对象,构造步骤是稳定的
- 变化点在部分构造细节的变化
- 通常与Composite组合使用
变化
对象各个部分内部实现
不变
对象创建算法,对象部分的个数
以上是关于Builder模式的主要内容,如果未能解决你的问题,请参考以下文章
Builder设计模式,模板设计模式,Adapter设计模式笔记