建造者模式:可以将一个产品的内部表现与产品的生成过程分割开来。从而可以使一个建造过程具有不同的内部表现的产品对象。如果我们用了建造者模式,那么用户就只需指定需要建造的类型就可以得到它们,而具体建造的过程和细节就不需要知道了
namespace 建造者模式{ class Program { static void Main(string[] args) { //创建指挥者 Director director = new Director(); //创建部件AB类 Builder b1 = new ConcreteBuilder1(); //创建部件XY类 Builder b2 = new ConcreteBuilder2(); //增加AB部件 director.Construct(b1); Product p1 = b1.GetResult(); //进行展示 p1.Show(); //增加XY部件 director.Construct(b2); Product p2 = b2.GetResult(); //进行展示 p2.Show(); Console.Read(); } } ////// 指挥者 /// class Director { ////// 用来指挥建造过程 /// /// public void Construct(Builder builder) { //建造AB部件 builder.BuildPartA(); //建造XY部件 builder.BuildPartB(); } } ////// 抽象建造者 /// abstract class Builder { public abstract void BuildPartA(); public abstract void BuildPartB(); public abstract Product GetResult(); } ////// 具体建造类1 /// class ConcreteBuilder1 : Builder { private Product product = new Product(); public override void BuildPartA() { product.Add("部件A"); } public override void BuildPartB() { product.Add("部件B"); } public override Product GetResult() { return product; } } ////// 具体建造类2 /// class ConcreteBuilder2 : Builder { private Product product = new Product(); public override void BuildPartA() { product.Add("部件X"); } public override void BuildPartB() { product.Add("部件Y"); } public override Product GetResult() { return product; } } ////// 产品类 /// class Product { IListparts = new List (); //增加产品部件 public void Add(string part) { parts.Add(part); } //展示产品 public void Show() { Console.WriteLine("\n产品 创建 ----"); //列出产品所有的部件 foreach (string part in parts) { Console.WriteLine(part); } } }}