c#设计模式—建造者模式

1、为什么要使用建造者模式?
抽象工厂模式中可以生产一系列相关的产品,我们利用抽象工厂模式获取了很多个对象,但是当我们想生产一个由多个部分组成的复杂对象时,也就是说我们只获取一个产品对象,但是这个产品如何构造的客户端不需要知道,这种情况下就需要使用建造者模式,建造者模式中,抽象建造者类定义生产产品各个部分的方法,具体建造者类负责实现,指挥者类负责定义生产各个部分的顺序,代码如下:

产品类定义了生产这个产品的各个部分的属性

 class Product
    {
        public string PartA { get; set; }
        public string PartB { get; set; }
        public string PartC { get; set; }
    }

抽象建造者类定义了一个产品对象,定义产品部件的方法、返回产品对象的方法,因为我们需要在具体建造者实现了抽象建造者类中定义的方法之后,返回这个被改变的产品对象(具体建造者类中改变了产品对象)。

   abstract class AbstractBuilder
    {

        public Product product = new Product();
        public abstract void CreatePartA();
        public abstract void CreatePartB();
        public abstract void CreatePartC();

        public Product CreateProduct()
        {
            return product;
        }
    }

具体建造者类,定义如何创建产品的各个部分

    class ConcreteBuilder:AbstractBuilder 
{
    public override void CreatePartA()
    {
        product.PartA = "PARTA";
    }

    public override void CreatePartB()
    {
        product.PartB = "PARTB";
    }
    public override void CreatePartC()
    {
        product.PartC = "PARTC";
    }
}

指挥者类,指定产品各个部分的建造顺序。

   class Director
{
    public Product ConstructProduct(AbstractBuilder ab)
    {
        ab.CreatePartA();
        ab.CreatePartB();
        ab.CreatePartC();
        return ab.CreateProduct();
    }
}

客户端调用类,最终获取经过具体建造者类改造的复杂产品对象。

 public Form1()
        {
            InitializeComponent();

            AbstractBuilder ab = new ConcreteBuilder();
            Director dir = new Director();
            Product product = dir.ConstructProduct(ab);
        }
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

c#上位机

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值