C#建造者模式

  /// <summary>
  /// 电脑类
  /// </summary>  
  public class Computer
  {
    //电脑组件集合
    private IList<string> parts = new List<string>();

    //把单个组件添加到电脑组件集合中
    public void Add(string part) {
      parts.Add(part);
    }

    //
    public void Show() {
      Console.WriteLine("电脑开始在组装.....");
      foreach (var part in parts)
      {
        Console.WriteLine("组件"+part+"已经装好");
      }
      Console.WriteLine("电脑组装好了");
    }
  }

  /// <summary>
  /// 抽象建造者
  /// </summary>
  public abstract class Builder
  {

    //装CPU
    public abstract void BuilderPartCUP();
    //装主板

    public abstract void BuilderPartMainBoard();
    //获得组装好的电脑

    public abstract Computer GetComputer();
  }

  //组装人1

  public class ConcreteBuilder1 : Builder
  {
    Computer com = new Computer();
    public override void BuilderPartCUP()
    {
      com.Add("CPU1");
    }

    public override void BuilderPartMainBoard()
    {
      com.Add("Main Board1");
    }

    public override Computer GetComputer()
    {
      return com;
    }
  }

  //组装人2

  public class ConcreteBuilder2 : Builder
  {
    Computer com = new Computer();
    public override void BuilderPartCUP()
    {
      com.Add("CPU2");
    }

    public override void BuilderPartMainBoard()
    {
      com.Add("Main Board2");
    }

    public override Computer GetComputer()
    {
      return com;
    }
  }

  //指挥创建

  public class Director {
    public void Construct(Builder builder) {
      builder.BuilderPartCUP();
      builder.BuilderPartMainBoard();
    }
  }

  调用: 

  var dir = new Director();
  Builder con1 = new ConcreteBuilder1();
  Builder con2 = new ConcreteBuilder2();

  dir.Construct(con1);
  var com1 = con1.GetComputer();
  com1.Show();

  dir.Construct(con2);
  var com2 = con2.GetComputer();
  com2.Show();

  

  建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

  建造者模式使得建造代码与表示代码的分离,可以使客户端不必知道产品内部组成的细节,从而降低了客户端与具体产品之间的耦合度,

  介绍完了建造者模式的具体实现之后,让我们总结下建造模式的实现要点:

  1 在建造者模式中,指挥者是直接与客户端打交道的,指挥者将客户端创建产品的请求划分为对各个部件的建造请求,再将这些请求委派到具体建造者角色,具体建造者角色是完成具体产品的构建工作的,却不为客户所知道。

  2 建造者模式主要用于“分步骤来构建一个复杂的对象”,其中“分步骤”是一个固定的组合过程,而复杂对象的各个部分是经常变化的(也就是说电脑的内部组件是经常变化的,这里指的的变化如硬盘的大小变了,CPU由单核变双核等)。

  3 产品不需要抽象类,由于建造模式的创建出来的最终产品可能差异很大,所以不大可能提炼出一个抽象产品类。

  4 在前面文章中介绍的抽象工厂模式解决了“系列产品”的需求变化,而建造者模式解决的是 “产品部分” 的需要变化。

  5 由于建造者隐藏了具体产品的组装过程,所以要改变一个产品的内部表示,只需要再实现一个具体的建造者就可以了,从而能很好地应对产品组成组件的需求变化。

  转:http://www.cnblogs.com/zhili/p/BuilderPattern.html

转载于:https://www.cnblogs.com/zwyAndDong/p/9773261.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值