博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
不得不懂的C#设计模式学习(一)
阅读量:4969 次
发布时间:2019-06-12

本文共 2466 字,大约阅读时间需要 8 分钟。

       每天有两个小时要在地铁上度过,打发枯燥的坐车时间唯有看书。最近在看经典大作大话设计模式,其中的编程思想带给我很大的震撼。

每天学习一个设计模式(建造者模式)

   建造者模式概述:

      建造则(Builder Pattern)也叫做生成器模式,提供一种“封装机制”来隔离出"复杂对象的各个部分"的变化,从而保持"稳健构建算法"不随着需求改变而改变。

      (将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.)

  在建造者模式中,有如下四个角色:

     Product产品类:

通常是实现了模板方法模式,也就是有模板方法和基本方法。

     Builder抽象建造者:

规范产品的组建,一般是由子类实现。

     ConcreteBuilder具体建造者

实现抽象类定义的所有方法,并返回一个组件好的对象。

     Director导演

负责安排已有模块的顺序,然后告诉Builder开始创建。

代码清单:   

public class Product    {        IList
parts = new List
(); 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类按照次序构建所需的组件。

相关模式

          抽象工厂:重点是工厂模式(简单或者复杂工厂),而建造者模式重点是由简单模式构建复杂对象。

          复合模式:经常被用来构建复杂模式。

 

转载于:https://www.cnblogs.com/mondLei/archive/2013/04/09/3009333.html

你可能感兴趣的文章
Linux环境下SolrCloud集群环境搭建关键步骤
查看>>
P3565 [POI2014]HOT-Hotels
查看>>
MongoDB的简单使用
查看>>
hdfs 命令使用
查看>>
prometheus配置
查看>>
【noip2004】虫食算——剪枝DFS
查看>>
python 多进程和多线程的区别
查看>>
sigar
查看>>
iOS7自定义statusbar和navigationbar的若干问题
查看>>
[Locked] Wiggle Sort
查看>>
deque
查看>>
Setting up a Passive FTP Server in Windows Azure VM(ReplyCode: 227, Entering Passive Mode )
查看>>
c#中从string数组转换到int数组
查看>>
数据模型(LP32 ILP32 LP64 LLP64 ILP64 )
查看>>
java小技巧
查看>>
POJ 3204 Ikki's Story I - Road Reconstruction
查看>>
【BZOJ】2959: 长跑(lct+缩点)(暂时弃坑)
查看>>
iOS 加载图片选择imageNamed 方法还是 imageWithContentsOfFile?
查看>>
toad for oracle中文显示乱码
查看>>
SQL中Group By的使用
查看>>