设计模式(5)-建造者模式

和工厂模式不同,工厂模式是返回一个或者多个产品,但是建造者模式顾名思义,也就是注重产生产品的细节,虽然最后也是返回一个产品,但是这种设计模式是注重于产品的构成。也就是对产品的产生流程进行处理的一种设计模式。这是我的理解。

比如上文说的抽象工厂模式,肯德基套餐中是返回一个吃的和一个喝的。我们接着以肯德基套餐为例,看看建造者模式。

建造者模式中,返回的是套餐的对象

    public class Taocan
    {
        public string Food;
        public string Drink;
    }

那么套餐是怎么生成的呢?要先放一个吃的,再放一个喝的。那么,建造者的抽象类就是这样的。

    public abstract class TaocanBuilder
    {
        public abstract void SetFood();
        public abstract void setDrink();
        public abstract Taocan GetTaocan();
    }

所有的建造者都要遵循抽象类的做法,放一个吃的,放一个喝的,然后返回套餐。

    // 廉价套餐的生产者
    public class CheapBuilder : TaocanBuilder
    {
        Taocan taocan = new Taocan();
        public override void SetFood()
        {
            taocan.Food = "鸡腿堡";
        }

        public override void setDrink()
        {
            taocan.Drink = "豆浆";
        }

        public override Taocan GetTaocan()
        {
            return taocan;
        }
    }
    // 奢华套餐的生产者
    public class HighPriceBuilder : TaocanBuilder
    {
        Taocan taocan = new Taocan();
        public override void SetFood()
        {
            taocan.Food = "原味鸡";
        }

        public override void setDrink()
        {
            taocan.Drink = "咖啡";
        }

        public override Taocan GetTaocan()
        {
            return taocan;
        }
    }

但是,我们到肯德基去买套餐,肯定不会直接跟后边做餐的人喊吧,是需要通过收银员交钱,然后收银员给拿套餐的对不对?

    // 收银员
    public class Shouyinyuan
    {
       
        public Taocan GetProduct(TaocanBuilder builder)
        {
            builder.SetFood();
            builder.setDrink();
            return builder.GetTaocan();
        }
    }

然后,我们通过收银员就可以得到套餐了,我们是这样做的。

	    Shouyinyuan mm = new Shouyinyuan();
            TaocanBuilder build = new CheapBuilder();
            Taocan taocan = mm.GetProduct(build);

这就是建造者模式了,这种模式注重的是产品如何产生的。


知行办公,专业移动办公平台
 https://zx.naton.cn/
【总监】十二春秋之,3483099@qq.com;
【Master】zelo,616701261@qq.com;
【运营】运维艄公,897221533@qq.com;
【产品设计】流浪猫,364994559@qq.com;
【体验设计】兜兜,2435632247@qq.com;
【iOS】淘码小工,492395860@qq.com;iMcG33K,imcg33k@gmail.com;
【Android】人猿居士,1059604515@qq.com;思路的顿悟,1217022114@qq.com;
【java】首席工程师MR_W,feixue300@qq.com;
【测试】土镜问道,847071279@qq.com;
【数据】fox009521,42151960@qq.com;
【安全】保密,你懂的。 








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值