C#设计模式二(建造者模式)

C#建造者模式

一、引言

它主要用于创建一些复杂对象,这些对象内部构建间的建造顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化。

它使得建造代码与表示代码分离,由于建造者隐藏了该产品是如何组装的,所以若需要改变一个产品的内部表示,只需要再定义一个具体的建造者就可以了。

二、目的

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

三、特点

优点:
表述与构建分离。
方便扩展。
接口交互,建造者后期添加或减少不对用户调用产生较大影响。

缺点:
建造者没有等级的划分,结构不清晰。
建造者内部的任务固定,顺序不易颠倒,否则造成很大的影响

四、建造者范例

在这里插入图片描述

如上图所示,

1、Director作统一调度和指挥,Director俗称包“包工头”;
2、Builder是建筑的统一规范,它是抽象类。每个建筑者必须继承此类,以符合相关建筑规范。
3、ConcreteBuilder是具体的建筑队,它继承Builder,实现内部规范。
4、Product是产品,它是建筑队索要建造的对象。

包工头,其职责在于指挥和控制建筑队

    //指导员(包工头),负责总指挥
    class Director
    {
   
        //组建建筑队,不建议在这里做,如果这样做了,如果用户想要改变建筑队,就需要修改Director类。耦合性高
        //public Director()
        //{
   
		//	 Builder b1 = new ConcreteBuilder1(); //新建一个建筑队1
        //   Builder b2 = new ConcreteBuilder2(); //新建一个建筑队2
		//}
        //指挥一个"建筑队"做具体的事情。
        public void Construct(Builder builder)  //在包工头职责里含有指导指定建筑队进行相关作业
        {
   
            builder.BuildPartA(); //指挥建造A
            builder.BuildPartB(); //指挥建造B
        }
    } 
//按照情况来说,包公头本应该还有一个职责就是召集若干个建筑队,但是这里不建议

//建造者规范(此为接口,Director与实际建造者沟通就是此接口)

//统一的接口,建筑队必须能造建筑部分A,能早建筑部分B,还可以反馈建造进度
    abstract class Builder
    {
   
        public abstract void BuildPartA();  //建造A
        public abstract void BuildPartB();  //建造B
        public abstract Product GetResult();
    }
//第一建筑队,符合建筑规范的接口
class ConcreteBuilder1 : Builder
{
   
    private Product product = new Product(); 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值