和工厂模式不同,工厂模式是返回一个或者多个产品,但是建造者模式顾名思义,也就是注重产生产品的细节,虽然最后也是返回一个产品,但是这种设计模式是注重于产品的构成。也就是对产品的产生流程进行处理的一种设计模式。这是我的理解。
比如上文说的抽象工厂模式,肯德基套餐中是返回一个吃的和一个喝的。我们接着以肯德基套餐为例,看看建造者模式。
建造者模式中,返回的是套餐的对象
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;
【安全】保密,你懂的。