设计模式之[构建者模式(Builder)]-C#
1 var director = new Director();
2 var sanxingBuilder = new SanxingBuilder();
3 director.Build(sanxingBuilder);
4 var sanxingComputer = sanxingBuilder.GetComputer();
5 Console.WriteLine(sanxingComputer);
6
7 var dellBuilder = new DellBuilder();
8 director.Build(dellBuilder);
9 var dellComputer = dellBuilder.GetComputer();
10 Console.WriteLine(dellComputer);
11
12 //1、定义要构建的对象 电脑
13 public class Computer
14 {
15 public string Cup { get; set; } = string.Empty;
16 public string Memory { get; set; } = string.Empty;
17 public string Mainbord { get; set; } = string.Empty;
18 public string Screen { get; set; } = string.Empty;
19
20 public override string ToString()
21 {
22 return $"Cup:{Cup},Memory:{Memory},Mainbord:{Mainbord},Screen:{Screen}";
23 }
24 }
25
26 //2、定义一个抽象构建器
27 public abstract class Builder
28 {
29 public abstract Builder BuildCpu();//返回类型是自己(Builder),这样就支持链式调用
30 public abstract Builder BuildMemory();
31 public abstract Builder BuildMainbord();
32 public abstract Builder BuildScreen();
33
34 public abstract Computer GetComputer();
35 }
36
37 //3、实现构建起 三星
38 public class SanxingBuilder : Builder
39 {
40 private readonly Computer _computer = new Computer();
41
42 public override Builder BuildCpu()
43 {
44 _computer.Cup = "三星 CUP";
45 Console.WriteLine(_computer.Cup);
46 return this;
47 }
48
49 public override Builder BuildMainbord()
50 {
51 _computer.Mainbord = "三星 CUP";
52 Console.WriteLine(_computer.Mainbord);
53 return this;
54 }
55
56 public override Builder BuildMemory()
57 {
58 _computer.Memory = "三星 Memory";
59 Console.WriteLine(_computer.Memory);
60 return this;
61 }
62
63 public override Builder BuildScreen()
64 {
65 _computer.Screen = "三星 Screen";
66 Console.WriteLine(_computer.Screen);
67 return this;
68 }
69
70 public override Computer GetComputer()
71 {
72 return _computer;
73 }
74 }
75
76 //3实现 构建者 dell
77 public class DellBuilder : Builder
78 {
79 private readonly Computer _computer = new Computer();
80 public override Builder BuildCpu()
81 {
82 _computer.Cup = "戴尔 CUP";
83 Console.WriteLine(_computer.Cup);
84 return this;
85 }
86
87 public override Builder BuildMainbord()
88 {
89 _computer.Mainbord = "戴尔 Mainbord";
90 Console.WriteLine(_computer.Mainbord);
91 return this;
92 }
93
94 public override Builder BuildMemory()
95 {
96 _computer.Memory = "戴尔 Memory";
97 Console.WriteLine(_computer.Memory);
98 return this;
99 }
100
101 public override Builder BuildScreen()
102 {
103 _computer.Screen = "戴尔 Screen";
104 Console.WriteLine(_computer.Screen);
105 return this;
106 }
107
108 public override Computer GetComputer()
109 {
110 return _computer;
111 }
112 }
113
114 //4、导演角色、编排构建顺序
115 public class Director
116 {
117 public void Build(Builder builder)
118 {
119 builder
120 .BuildCpu()
121 .BuildMainbord()
122 .BuildMemory()
123 .BuildScreen();
124 }
125 }
设计模式之[构建者模式(Builder)]-C#的更多相关文章
- 设计模式之构建者模式(Builder):初步理解
构建者(Builder)设计模式(又叫生成器设计模式): 当一个类的内部数据过于复杂的时候(通常是负责持有数据的类,比如Config.VO.PO.Entity...),要创建的话可能就需要了解这个类的 ...
- 深入探索Java设计模式之构建器模式(五)
抽丝剥茧 细说架构那些事——[优锐课] 简单的程序不需要大量的设计过程,因为它们只关注有限的解决方案,仅使用几个类.大型程序专注于广泛的设计,该设计比好的设计范例的任何其他属性都更能利用可重用性.宏伟 ...
- 设计模式系列之建造者模式(Builder Pattern)——复杂对象的组装与创建
说明:设计模式系列文章是读刘伟所著<设计模式的艺术之道(软件开发人员内功修炼之道)>一书的阅读笔记.个人感觉这本书讲的不错,有兴趣推荐读一读.详细内容也可以看看此书作者的博客https:/ ...
- 构建者模式Builder创建对象
构建者(Builder)设计模式(又叫生成器设计模式): 当一个类的内部数据过于复杂的时候(通常是负责持有数据的类,比如Config.VO.PO.Entity...),要创建的话可能就需要了解这个类的 ...
- Net设计模式实例之建造者模式(Builder Pattern)
一.建造者模式简介(Brief Introduction) 建造者模式(Builder Pattern),将一个复杂对象的构建与它的表示分离,使的同样的构建过程可以创建不同的表示. 建造者模式的优点是 ...
- 【原】iOS设计模式之:建造者模式Builder Pattern,用于改进初始化参数
本文主要讨论一下iOS中的Builder Pattern.与网上很多版本不同,本文不去长篇大论地解释建造者模式的概念,那些东西太虚了.设计模式这种东西是为了解决实际问题的,不能为了设计模式而设计模式, ...
- iOS设计模式之:建造者模式Builder Pattern,用于改进初始化参数
转自:http://www.cnblogs.com/wengzilin/p/4365855.html 本文主要讨论一下iOS中的Builder Pattern.与网上很多版本不同,本文不去长篇大论地解 ...
- 构建者模式(Builder pattern)
构建者模式应用场景: 主要用来构建一些复杂对象,这里的复杂对象比如说:在建造大楼时,需要先打牢地基,搭建框架,然后自下向上地一层一层盖起来.通常,在建造这种复杂结构的物体时,很难一气呵成.我们需要首先 ...
- IOS设计模式浅析之建造者模式(Builder)
定义 "将一个复杂对象的构建与它的表现分离,使得同样的构建过程可以创建不同的表现". 最初的定义出现于<设计模式>(Addison-Wesley,1994). 看这个概 ...
- 设计模式 笔记 生成器(建造者)模式 Builder
//---------------------------15/04/08---------------------------- //builder 生成器(建造者)模式---对象创建型模式 /* ...
随机推荐
- String类、StringBuffer类、StringBuilder类
String类.StringBuffer类.StringBuilder类 String类的创建 // 方式一 直接赋值 String s = "woshihaoren"; // 方 ...
- 精通Spring 4.x 企业应用开发实战- 1.6 新特性
- CentOS DNS 安裝步驟
yum install bind bind-utils bind-devel bind-chroot [root@nw-centos-dns-01 ~]# rpm -qa | grep bind bi ...
- 关于PB用JDBC连接MySQL,亲测有效
以前自学过一段时间的PB,数据窗口让人印象深刻,前段时间,在西瓜视频看到有人录制了PB的教学视频,让我想起以前自学的那段时光,遇到了问题,也不知道问谁,现在网络发达,可以在网上查找问题,但是有大多数博 ...
- DNS Capture: UDP, TCP, IP-Fragmentation, EDNS, ECS, Cookie
EDNS 扩展实现"EDNS Client Subnet" (ECS) 和 DNS cookies.' 这里不讨论相关概念,实现如有疑问请查看: https://weberblog ...
- 导出生成word
用XML做就很简单了.Word从2003开始支持XML格式,大致的思路是先用office2003或者2007编辑好word的样式,然后另存为xml,将xml翻译为FreeMarker模板(后缀为.ft ...
- WinHex恢复分区
情景再现:可能在某一天,打开电脑时发现只剩C盘,剩下的盘找不到了,那么要如何恢复呢? 创建虚拟硬盘方便我们做实验 右键计算机 -> 管理 -> 磁盘管理右键 -> 创建VHD虚拟硬盘 ...
- Spring Boot 入门学习笔记
0x01 前言 大一选修课C++/JAVA二选一,选学了C++.但在后续课程中,发现JAVA的用途很多,所以简单学习了JAVA的语法.同时,也开始了我的Spring Boot 春季|家 (spri ...
- k8s容器互联-flannel host-gw原理篇
k8s容器互联-flannel host-gw原理篇 容器系列文章 容器系列视频 简析host-gw 前面分析了flannel vxlan模式进行容器跨主机通信的原理,但是vxlan模式需要对数据包进 ...
- Vditor在原生JS中如何结合后端使用
目录 1.Vditor介绍 2.如何在原生JS中结合后端使用 2.1 背景 2.2 正确使用方式 2.2.1 编辑页面 2.2.2 回显页面(修改页面) 2.2.3 预览页面 3.小结一下 1.Vdi ...