博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c# 建筑者模式的具体实现
阅读量:6874 次
发布时间:2019-06-26

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

  hot3.png

案例:          在软件系统中,有时需要创建一个复杂对象,并且这个复杂对象由其各部分子对象通过一定的步骤组合而成。例如一个采购系统中,如果需要采购员去采购一批电脑时,在这个实际需求中,电脑就是一个复杂的对象,它是由CPU、主板、硬盘、显卡、机箱等组装而成的,如果此时让采购员一台一台电脑去组装的话真是要累死采购员了,这里就可以采用建造者模式来解决这个问题,我们可以把电脑的各个组件的组装过程封装到一个建造者类对象里,建造者只要负责返还给客户端全部组件都建造完毕的产品对象就可以了。然而现实生活中也是如此的,如果公司要采购一批电脑,此时采购员不可能自己去买各个组件并把它们组织起来,此时采购员只需要像电脑城的老板说自己要采购什么样的电脑就可以了,电脑城老板自然会把组装好的电脑送到公司。下面就以这个例子来展开建造者模式的介绍。

第一步  创建我们生产对象体  

public class Computer{        ///收集所有的具体生产属性      private LIst
list=new List
();  public void Add(string str) {  Aist.add(str);  }  ///开始生产  public void Production(){ foreach(var s in list){  Console.WriteLine("组件"+part+"已装好"); }  }}

第二步   创建一个抽象的创建者

public abstract class Builder{   public void  abstract Cpu();   public void  abstract Mouse();   public abstract Computer  GetComputer(); }

第三步 实现创造者功能

///不同的创造者可以生产不同的电脑 public class ComputerOneBuilder: Builder{     Computer com=new Computer();      public void override Cpu(){        com.Add("cpu搞好了i7");        }     public void override Mouse(){          com.Add("鼠标生产号了");          }       public override Computer GetComputer(){        return  com;       }  } public class ComputerTwoBuilder: Builder{        Computer com=new Computer();     public void override Cpu(){            com.Add("cpu搞好了i5");      }     public void override Mouse(){       com.Add("鼠标生产号了");      }     public override Computer GetComputer(){       return com;  }  }

第三步 创建一个指挥者

public class Director{     public Command(Builder builder)      {               //指挥生产者生产CPU            builder.Cpu();           //指挥生产者生产 Mouse            builder.Mouse();     } }

第4步消费者购买电脑

class Customer     {         static void Main(string[] args){          ///找到指挥者            Director d=new Director();           ///告诉指挥者我要的电脑             ComputerOneBuilder one =new ComputerOneBuilder();            ///指挥者开始交生产者开始生产             d.Command(one);             //生产完成            one.GetComputer().Production();          ComputerTwoBuilder Two =new ComputerTwoBuilder();             ///指挥者开始交生产者开始生产           d.Command(Two);              //生产完成            Two.GetComputer().Production();                 }}

 

    

转载于:https://my.oschina.net/stuyun/blog/2353504

你可能感兴趣的文章
Python网络编程总结
查看>>
在DELL服务器上升级ESXI 5.5
查看>>
UML中组件图
查看>>
Docker容器使用问题:Failed to get D-Bus connection: Operation not permitted
查看>>
【转载】岁月倾尽,黯然诉说一纸神伤
查看>>
虚拟化系列-VMware vSphere 5.1 VDP备份管理
查看>>
三四五线城市真实的互联网
查看>>
sql执行顺序
查看>>
ZooKeeper开发手册中文翻译
查看>>
Oracle体系结构之Oracle分区
查看>>
HDU 2594 Simpsons’ Hidden Talents (KMP)
查看>>
CORS详解
查看>>
eclipse/myeclipse选中编辑区域文件,Package Explorer定位文件所在项目及文件夹
查看>>
Snail—OC学习之类别Category
查看>>
Java笔记2:Eclipse编写第一个Java程序
查看>>
【足迹C++primer】表达式求值
查看>>
javascript小白学习指南0---1
查看>>
C#实现接口xml序列化与反序列化
查看>>
[译]Godot系列教程一 - 场景与节点
查看>>
BUG级别定义标准
查看>>