建造者模式 -- 大话设计模式
在今天,读书有时是件“麻烦”事。它需要你付出时间,付出精力,还要付出一份心境。--仅以《大话设计模式》来祭奠那逝去的……
建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的建造过程可以创建不同的表示
1.建造者模式应用
一家服装厂,经理老张,员工两名(一个师傅老王,一个徒弟小海),客户跟老张联系,要做两件衣服,老张指派老王和小海各做一件
定义建造者抽象类和具体建造者,他们是具体干活的(对象的构建)
/// <summary>
/// 员工抽象类(建造者抽象类)
/// </summary>
public abstract class Staff
{
protected string _name;
public Staff(string name)
{
this._name = name;
}
/// <summary>
/// 具体业务
/// </summary>
public abstract void DoSomething();
}
/// <summary>
/// 一般员工(具体建造者)
/// </summary>
public class GeneralStaff : Staff
{
public GeneralStaff(string name) : base(name) { }
public override void DoSomething()
{
Console.WriteLine("{0}【一般员工】做的衣服,做工粗糙", this._name);
}
}
/// <summary>
/// 资深员工(具体建造者)
/// </summary>
public class SeniorStaff : Staff
{
public SeniorStaff(string name) : base(name) { }
public override void DoSomething()
{
Console.WriteLine("{0}【资深员工】做的衣服,做工精细", this._name);
}
}
定义指挥者,负责与外部对接的(表示的分离)
/// <summary>
/// 指挥者
/// </summary>
public class Director
{
protected string _name;
public Director(string name)
{
this._name = name;
}
/// <summary>
/// 指派员工干活
/// </summary>
public void Assign(Staff staff)
{
staff.DoSomething();
}
}
开启场景模拟
static void Main(string[] args)
{
//一家服装厂,经理老张,员工两名(一个师傅老王,一个徒弟小海)
Director laozhang = new Director("老张");
SeniorStaff laowang = new SeniorStaff("老王");
GeneralStaff xiaohai = new GeneralStaff("小海");
//客户跟老张联系,要做两件衣服,老张指派老王和小海各做一件
laozhang.Assign(laowang);
laozhang.Assign(xiaohai);
}

浙公网安备 33010602011771号