设计模式培训之八:建造者模式
摘要: 查看本人文章索引请通过http://www.cnblogs.com/seesea125/archive/2012/04/17/2453256.html
一、定义
将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示。
二、应用场景
当一个产品需要复杂的构造,但是构造过程是稳定的,只是构造的对象有不同表示时,就可以使用建造模式。
三、代码实现
class Product { IList<string> parts=new List<string>(); public void Add(string part) { parts.Add(part); } public void show() { Console.WriteLine("\n产品 创建----"); foreach (string part in parts) { Console.WriteLine(part); } } } internal abstract class Bulider { public abstract void BulidPartA(); public abstract void BulidPartB(); public abstract Product GetResult(); } class ConcreteBuilder1:Bulider { private Product product =new Product(); public override void BulidPartA() { product.Add("部件A"); } public override void BulidPartB() { product.Add("部件B"); } public override Product GetResult() { return product; } } class ConcreteBuilder2 : Bulider { private Product product = new Product(); public override void BulidPartA() { product.Add("部件X"); } public override void BulidPartB() { product.Add("部件Y"); } public override Product GetResult() { return product; } } class Director { public void Construct(Bulider bulider) { bulider.BulidPartA(); bulider.BulidPartB(); } }
客户端调用:
Director director = new Director(); Bulider b1 = new ConcreteBuilder1(); Bulider b2 = new ConcreteBuilder2(); director.Construct(b1); Product p1 = b1.GetResult(); p1.show(); director.Construct(b2); Product p2 = b2.GetResult(); p2.show(); Console.Read();
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!