标签:man 总结 创建 tno 小明 memory 解耦 委派 col
一、建造者模式介绍:
建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示,使得建造代码与表示代码的分离,可以使客户端不必知道产品内部组成的细节,从而降低了客户端与具体产品之间的耦合度。建造者模式的本质是使组装过程和创建具体产品解耦。
二、情景例子:
还是以笔记本为例子,电脑店想进一批笔记本,采购员去到笔记本工厂里取货,笔记本具有很多配件例如CPU、内存、主板、电源等等,不可能是让采购员去到自己一个一个配件去装,工厂都是事先让工人们装好了一批又一批笔记本。这里就能够用到建造者模式去实现,将笔记本的每个配件的组装封装到一个建造者类中,建造者只需返回建造完成的产品对象就可以了。
三、相关代码:
1、创建产品类,包含产品配件的集合:
/// <summary> /// 产品(笔记本)类 /// </summary> public class NoteBook { //笔记本组件集合 private IList<string> parts = new List<string>(); //把单个组件添加到笔记本组件集合中 public void Add(string part) { parts.Add(part); } //展示安装过程 public void Show() { Console.WriteLine("笔记本正在组装...."); foreach (var item in parts) { Console.WriteLine("组件"+item+"已装好!"); } Console.WriteLine("笔记本组装完毕!"); } }
2、创建建造者抽象父类,因为笔记本配件的安装过程是一致的:
/// <summary> /// 建造者抽象父类 /// </summary> public abstract class Builder { //装CPU public abstract void BuildPartCPU(); //装内存 public abstract void BuildPartMemory(); //获得组装好的笔记本 public abstract NoteBook GetNoteBook(); }
3、创建建造者模式中的指挥者,指挥具体建造者组装笔记本:
/// <summary> /// 指挥者类 /// </summary> public class Commander { //组装笔记本 public void Construct(Builder builder) { builder.BuildPartCPU(); builder.BuildPartMemory(); } }
4、创建具体建造者,重写抽象组装过程方法,区别只在于其组装的配件不同:
/// <summary> /// 具体建造者类 /// </summary> public class Worker1 : Builder { NoteBook notebook = new NoteBook(); public override void BuildPartCPU() { notebook.Add("i5-CPU"); } public override void BuildPartMemory() { notebook.Add("4G-KingSton"); } public override NoteBook GetNoteBook() { return notebook; } }
/// <summary> /// 具体制造者类 /// </summary> public class Worker2 : Builder { NoteBook notebook = new NoteBook(); public override void BuildPartCPU() { notebook.Add("i7-CPU"); } public override void BuildPartMemory() { notebook.Add("8G-KingSton"); } public override NoteBook GetNoteBook() { return notebook; } }
5、调用
Commander commander = new Commander(); //工人小明 Builder xiaoming = new Worker1(); //指挥者叫小明去组装笔记本 commander.Construct(xiaoming); //小明装好了笔记本 NoteBook notebook1 = xiaoming.GetNoteBook(); notebook1.Show(); //工人小红 Builder xiaohong = new Worker2(); //指挥者叫小红去组装笔记本 commander.Construct(xiaohong); //小红装好了笔记本 NoteBook notebook2 = xiaohong.GetNoteBook(); notebook2.Show(); Console.ReadKey();
四、总结:
建造模式的实现要点:
标签:man 总结 创建 tno 小明 memory 解耦 委派 col
原文地址:https://www.cnblogs.com/jiechou/p/9073704.html