4.建造者模式(Builder Pattern)
发布日期:2021-05-10 05:01:35 浏览次数:35 分类:原创文章

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

建造者模式


在日常生活中有这样一个场景,我想要一台电脑,但是我又不想要自己买配件组装,于是找到一个店铺把找到满意的电脑下单,商家在收到我的订单之后,开始安排技术人员组装,组装好之后再把电脑寄过来。


对于一台电脑来说,里面包含CPU、主板、显卡、内存、硬盘、电源、机箱等等配置,可以把电脑当成一个复杂的对象,CPU,主板等电脑配件,又有很多种选择,但是组装电脑的过程基本是一样的,这时候就可以用建造者模式实现这一过程。



意图:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。
主要解决:主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。



在这里插入图片描述
我们来已创建一个水杯举例子,代码如下。


using System;namespace _04_Builder{
/// <summary> /// 建造者 /// </summary> class Program {
static void Main(string[] args) {
//小明要制作一个运动水杯 Builder b1 = new SportCupBuilder(); Director director = new Director(b1); director.Create(); Cup cup = new Cup(); cup.Drink(); Console.ReadKey(); } } public class Director {
Builder b = null; public Director(Builder builder) {
b = builder; } public void Create() {
b.BuildString(); b.BuildCap(); b.BuildBody(); } } //我想定制个水杯 public abstract class Builder {
public abstract void BuildString(); public abstract void BuildCap(); public abstract void BuildBody(); } /// <summary> /// 运动水杯 /// </summary> public class SportCupBuilder : Builder {
public override void BuildString() {
Console.WriteLine("经历一番工作把杯子绳做好了"); } public override void BuildCap() {
Console.WriteLine("杯盖做好了"); } public override void BuildBody() {
Console.WriteLine("杯子主体做好了"); } } //这是我们要制作的水杯 public class Cup {
private string myString;//绳子 private string body; //主体 private string cap; //杯盖 public string MyString {
get {
return myString; } set {
myString = value; } } public string Body {
get {
return body; } set {
body = value; } } public string Cap {
get {
return cap; } set {
cap = value; } } public void Drink() {
Console.WriteLine("喝水。。。吨吨吨"); } }}

如果说需要在创建另外的一种水杯,同样是又杯绳,杯盖,杯体组成的话,就可以仿照SportCupBuilder方法在写一个方法继承自Builder即可。

上一篇:5.原型模式(Prototype Pattern)
下一篇:3.抽象工厂(AbstractFactory)

发表评论

最新留言

很好
[***.229.124.182]2025年04月17日 05时54分26秒