设计模式 Builder

来源:互联网 发布:淘宝佣金平台 编辑:程序博客网 时间:2024/06/06 17:59
/*****************************************************************BuilderdefinitionSeparate the construction of a complex object from its representation so that the same construction process can create different representations. *****************************************************************/using System;using System.Collections.Generic;namespace Pattern.Builder{public class MainApp{public static void Main(){Console.WriteLine("-------------  Builder Pattern -------------------");Builder builderA = new ConcreteBuilderA();Builder builderB = new ConcreteBuilderB();Director director = new Director();director.Construct(builderA);director.Construct(builderB);Console.Read();}}// Productclass Product{private List<string> _parts = new List<string>();public void AddPart(string part){_parts.Add(part);}public void Show(){Console.WriteLine("-------------- Product ------------");foreach(string part in _parts){Console.WriteLine(part);}}}// Builderabstract class Builder{public abstract Product GetResult();public abstract void BuilderPartA();public abstract void BuilderPartB();}// BuilderAclass ConcreteBuilderA:Builder{private Product _product = new Product();public override Product GetResult(){return _product;}public override void BuilderPartA(){_product.AddPart("part_A");}public override void BuilderPartB(){_product.AddPart("part_B");}}// BuilderBclass ConcreteBuilderB:Builder{private Product _product = new Product();public override Product GetResult(){return _product;}public override void BuilderPartA(){_product.AddPart("part_X");}public override void BuilderPartB(){_product.AddPart("part_Y");}}// Directorclass Director{public void Construct(Builder builder){builder.BuilderPartA();builder.BuilderPartB();builder.GetResult().Show();}}}


原创粉丝点击