首页 > 代码库 > Builder模式
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组合使用
变化
对象各个部分内部实现
不变
对象创建算法,对象部分的个数
null
Builder模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。