设计模式-建造者模式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式-建造者模式相关的知识,希望对你有一定的参考价值。
//产品
public abstract class Food
{
public List<string> list = new List<string>();
public abstract void show();
}
//辣椒炒肉
public class lajiaochaorou: Food
{
public override void show()
{
Console.WriteLine("我已经:");
foreach (var item in list)
{
Console.WriteLine(item);
}
Console.WriteLine("我变成了一盘香喷喷的辣椒炒肉");
Console.ReadLine();
}
}
public class hongshaorou: Food
{
public override void show()
{
Console.WriteLine("我已经:");
foreach (var item in list)
{
Console.WriteLine(item);
}
Console.WriteLine("我变成了一盘香喷喷的红烧肉");
Console.ReadLine();
}
}
//制造产品
public abstract class MakeFood
{
public abstract void addYan();
public abstract void addYou();
public abstract void addFood();
public abstract Food getResult();
}
public class MakeLaJiaoChaoRou : MakeFood
{
private lajiaochaorou ljcr = new lajiaochaorou();
public override void addFood()
{
ljcr.list.Add("加入了辣椒和肉");
}
public override void addYan()
{
ljcr.list.Add("撒上了1毫克盐");
}
public override void addYou()
{
ljcr.list.Add("倒入了2毫升油");
}
public override Food getResult()
{
return ljcr;
}
}
public class MakeHongShaoRou : MakeFood
{
private hongshaorou ljcr = new hongshaorou();
public override void addFood()
{
ljcr.list.Add("加入了酱油和肉");
}
public override void addYan()
{
ljcr.list.Add("撒上了3毫升盐");
}
public override void addYou()
{
ljcr.list.Add("倒入了5毫升油");
}
public override Food getResult()
{
return ljcr;
}
}
//指挥者
public class Director
{
public Food createFood(MakeFood mk)
{
mk.addYou();
mk.addYan();
mk.addFood();
return mk.getResult();
}
}
//前端
static void Main(string[] args)
{
Director d = new Director();
MakeFood md = new MakeLaJiaoChaoRou();
Food c =d.createFood(md);
MakeFood md2 = new MakeHongShaoRou();
Food c2 = d.createFood(md2);
c.show();
c2.show();
}
总结:建造者模式把创建过程和展示完全分离,创建时继承接口保证完全实现接口方法,这样可以确保创建过程的完整性。
当创建系列复杂对象,并且对象内部的构建顺序是有规律的,但构建方式有不同的变化时候,就可以选择建造者模式。
建造者模式和外观模式相似,都有一个中间层(指挥者或者门脸层)构建前端所需要展示的结果,区别在于:
外观-客户要赚钱,委托基金经理,基金经理会很多招数,股票行情好的时候,就买卖股票,黄金行情好的时候就买卖黄金,军火行情好的时候就买卖军火,各种行情都好的时候,就同时买卖股票、黄金、军火。以达到赚钱的目的。
仅仅是各个对象的组合,没有关注到每个对象的构建细节。
建造者-客户要赚钱,委托基金经理,这个基金经理只会股票交易,必须严格执行低买高卖的顺序,才能赚钱。
以上是关于设计模式-建造者模式的主要内容,如果未能解决你的问题,请参考以下文章