建造者模式(Builder Pattern)原理在于将一个复杂的问题分解为多个细小的问题,每个细小的问题则是一个对象,然后通过这些小对象构建成为复杂问题这个大的对象。也可以理解为这些小对象是一个单独的元器件,我们通过这些元器件进行不同的组合构建成不同且复杂的物体。
在建造者模式中通过一个指挥者来判断客户端需要创建目标类型。
建造者模式的优点: 1、独立的创建每个对象,易于扩展功能
2、局限性强产品必须有共同点
1、建造者模式的实现模型
Builder是一个抽象的接口类它涵盖了一个对象的所有组成部分的抽象接口,ConcreteBuilder是一个Builder接口的具体实现类。
product 则是一个使用接口创建出的具体产品。
Director是一个指挥者,它根据客户端的不同需求而创建不同的Product。
建造者模式的代码实现:
using System; using System.Collections.Generic; abstract class Builder { public abstract void BuiderPatyA (); public abstract void BuiderPatyB (); public abstract Product GetResult (); } class Product { IList<string> parts = new List<string> (); public void Add(string part) { parts.Add (part); } public void Show() { foreach(string part in parts) { Console.WriteLine (parts); } } } class ConcreteBuilder1 :Builder { private Product part = new Product (); public override void BuiderPatyA () { Console.WriteLine ("SHI XIAN LE FANG AN A"); } public override void BuiderPatyB () { Console.WriteLine ("SHI XIAN LE FANG AN B"); } public override Product GetResult () { return part; } } class ConcreteBuilder2 :Builder { private Product part = new Product (); public override void BuiderPatyA () { Console.WriteLine ("SHI XIAN LE FANG AN X"); } public override void BuiderPatyB () { Console.WriteLine ("SHI XIAN LE FAGN AN Y"); } public override Product GetResult () { return part; } } class Director { public void Construct(Builder buider) { buider.BuiderPatyA (); buider.BuiderPatyB (); } } class WinMain { public static void Main(string[] args) { Director director = new Director (); Builder b1 = new ConcreteBuilder1 (); Builder b2 = new ConcreteBuilder2 (); director.Construct (b1); Product patrA = b1.GetResult (); patrA.Show (); director.Construct (b2); Product patrB = b2.GetResult (); patrA.Show (); Console.ReadKey (); } }运行结果: