在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
每天有两个小时要在地铁上度过,打发枯燥的坐车时间唯有看书。最近在看经典大作大话设计模式,其中的编程思想带给我很大的震撼。 每天学习一个设计模式(建造者模式) 建造者模式概述: 建造则(Builder Pattern)也叫做生成器模式,提供一种“封装机制”来隔离出"复杂对象的各个部分"的变化,从而保持"稳健构建算法"不随着需求改变而改变。 (将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.) 在建造者模式中,有如下四个角色: Product产品类: 通常是实现了模板方法模式,也就是有模板方法和基本方法。 Builder抽象建造者: 规范产品的组建,一般是由子类实现。 ConcreteBuilder具体建造者 实现抽象类定义的所有方法,并返回一个组件好的对象。 Director导演 负责安排已有模块的顺序,然后告诉Builder开始创建。 代码清单: public class Product { IList<string> parts = new List<string>(); public void Add(string str) { parts.Add(str); } public void Show() { Console.WriteLine("\n产品创建-----"); foreach (string item in parts) { Console.WriteLine(item); } } } public abstract class Builder { public abstract void BuilderPartA(); public abstract void BuilderPartB(); public abstract Product GetResult(); } class ConcreteBuilder1 : Builder { private Product product = new Product(); public override void BuilderPartA() { product.Add("部件A"); } public override void BuilderPartB() { product.Add("部件B"); } public override Product GetResult() { return product; } } public class ConcerteBulider2 : Builder { private Product product = new Product(); public override void BuilderPartA() { product.Add("部件X"); } public override void BuilderPartB() { product.Add("部件Y"); } public override Product GetResult() { return product; } } public class Director { public void Construct(Builder builder) { builder.BuilderPartA(); builder.BuilderPartB(); } } static void Main(string[] args) { Director director = new Director(); Builder b1 = new ConcreteBuilder1(); Builder b2 = new ConcerteBulider2(); director.Construct(b1); Product p1 = b1.GetResult(); p1.Show(); director.Construct(b2); Product p2 = b2.GetResult(); p2.Show(); } 总结:建造者模式的实质是解耦组装过程和创建具体部件,使得我们不关心每个部件是如何组装的。 建造者模式的奥妙在于Builder将构建次序交给Director类按照次序构建所需的组件。 相关模式 抽象工厂:重点是工厂模式(简单或者复杂工厂),而建造者模式重点是由简单模式构建复杂对象。 复合模式:经常被用来构建复杂模式。
|
请发表评论