建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。即组装一个完整的产品需要不同的部件,而由于部件的不同又可以组装出不相同的产品。
举个简单的例子:就像组装电脑,需要用显示器,主机,键盘,和鼠标。组装过程中如果显示器我分别用普通显示器和液晶显示器则会出现不相同的两个成品。如下:
abstractclass Computer
{
public abstract void AddMonitor();
public abstract void AddHost();
public abstract void AddKeyboard();
public abstract void AddMouse();
}
classConnectComputer1:Computer
{
public override void AddMonitor();
{
console.WriteLine("液晶显示器");
}
public override void AddHost();
{
console.WriteLine("联想主机");
}
public override void AddKeyboard();
{
console.WriteLine("联想键盘");
}
public override void AddMouse();
{
console.WriteLine("联想鼠标");
}
}
ConnectComputer2 中将“液晶显示器”换成“普通显示器”。
classBuilder
{
private Computer cc;
public Builer(Computer cc)
{
this.cc=cc;
}
public void Assemble()
{
cc.AddMonitor();
cc.AddHost();
cc.AddKeyboard();
cc.AddMouse();
}
}
主函数如下:
Computerpc1=new ConnectComputer1();
Builderbb1=new Builder(pc);
bb1.Assemble();
Computerpc2=new ConnectComputer2();
Builderbb2=new Builder(pc);
bb2.Assemble();
由上面的例子则可得出两种不同的电脑。
综上所述:建造者模式就是将组成一个整体的各个部分抽象出相同的方法,放在超类;而要得到一个产品,则实例化一个具体对象继承超类,完成其方法即可。再通过构建者将其输出即可。