建造者模式的C#实现
来源:互联网 发布:国际数据流量怎么开通 编辑:程序博客网 时间:2024/05/18 18:19
借鉴各路大神,就不做链接了
class BuilderPattern { /// <summary> /// 产品类 /// </summary> public class Product { public string need; public void IntroduceSelf() { Console.WriteLine(need); Console.WriteLine("complete"); } } /// <summary> /// 生产者类 /// </summary> public abstract class Builder { public abstract void Method1(); public abstract void Method2(); public abstract Product GetProduct(); } /// <summary> /// 会生产某种产品的员工 /// </summary> public class ConcreteBuilder : Builder { Product product = new Product(); public override Product GetProduct() { return product; } public override void Method1() { product.need += "Method1"; } public override void Method2() { product.need += "Method2"; } } //调用 //BuilderPattern.ConcreteBuilder concreteBuilder = new BuilderPattern.ConcreteBuilder(); //concreteBuilder.Method1();//假设这里有一百个过程是不是要写一百次? //concreteBuilder.Method2(); //BuilderPattern.Product product = concreteBuilder.GetProduct(); //product.IntroduceSelf(); /// <summary> /// 管理Builder,厂商老板安排Builder员工生产某个产品 /// </summary> public class Director { public Product GetProduct() { ConcreteBuilder concreteBuilder = new ConcreteBuilder(); concreteBuilder.Method1(); concreteBuilder.Method2(); Product product = concreteBuilder.GetProduct(); return product; } } //调用 //BuilderPattern.Director director = new BuilderPattern.Director(); //BuilderPattern.Product product = director.GetProduct(); //product.IntroduceSelf(); //然后你可以给director.GetProduct();带参数Type type 达到需要什么类型的产品就生产出什么类型的产品 /// <summary> /// 生产另一种类型的同种产品,比如组装电脑时不同的CPU 硬盘等 /// </summary> public class ConcreteBuilder2 : Builder { Product product = new Product(); public override Product GetProduct() { return product; } public override void Method1() { product.need += "NewMethod1"; } public override void Method2() { product.need += "NewMethod2"; } } public class NewDirector { public Product GetProduct(string str)//先用字符串表示 { Product product; switch (str) { case "1": ConcreteBuilder concreteBuilder1 = new ConcreteBuilder(); concreteBuilder1.Method1(); concreteBuilder1.Method2(); product = concreteBuilder1.GetProduct(); break; case "2": ConcreteBuilder2 concreteBuilder2 = new ConcreteBuilder2(); concreteBuilder2.Method1(); concreteBuilder2.Method2(); product = concreteBuilder2.GetProduct(); break; default: ConcreteBuilder concreteBuilder = new ConcreteBuilder(); concreteBuilder.Method1(); concreteBuilder.Method2(); product = concreteBuilder.GetProduct(); break; } return product; } } //调用 //BuilderPattern.NewDirector director = new BuilderPattern.NewDirector(); //BuilderPattern.Product product = director.GetProduct("2"); //product.IntroduceSelf(); }
阅读全文
0 0
- 建造者模式的C#实现
- 建造者模式的实现
- c#建造者模式
- 设计模式--建造者模式(c#反射实现)
- php实现建造者模式
- 建造者模式c++实现
- C++实现建造者模式
- 建造者模式lua实现
- 建造者模式C++实现
- C++实现建造者模式
- 建造者模式C++实现
- 建造者模式 - C++实现
- 建造者模式(java实现)
- C# 设计模式之 建造者模式
- C#设计模式(3)建造者模式
- C#设计模式05-建造者模式
- 【C#设计模式-建造者模式】
- C#设计模式—建造者模式
- HTTP请求中的form data和request payload的区别
- linux 源配置
- 单词接龙(DFS)
- Gson数据解析实例分析
- kappa系数在评测中的应用
- 建造者模式的C#实现
- 一起学安全测试——用Burp Suite进行暴力破解
- CCPC 2016 长春赛区 hdu5912
- C++数值类型与string的相互转换
- Tomcat配置公网访问
- Docker简介(一)
- 1014. 福尔摩斯的约会 (20)
- HDU1098 规律题
- 嵌入式 Linux 对内存的直接读写(devmem)