建造者模式
通过拆分一件复杂的工作 成一系列小步骤。
从而在相似工作中,复用其中一部分小步骤。
同时通过一个指挥者类,将小步骤包装成一件完整的工作。
class Program
{
public static void Run()
{
Director director = new Director();
Builder biler_Bridge = new BridgeBuilder();
director.StartBuild(biler_Bridge);
Console.WriteLine();
Console.WriteLine();
Builder biler_Skyscraper = new SkyscraperBuilder();
director.StartBuild(biler_Skyscraper);
}
}
/// <summary>
/// 指挥者
/// </summary>
class Director
{
public void StartBuild(Builder builder)
{
builder.MakeTarget();
builder.FeasibilityStudy();
builder.MakePlan();
builder.StartBuild();
builder.HalfwayCheckUp();
builder.ContinueBuild();
builder.FinalCheckUp();
}
}
public abstract class Builder
{
public virtual void MakeTarget()
{
Console.WriteLine("订立目标");
}
public virtual void FeasibilityStudy()
{
Console.WriteLine("可行性研究");
}
public virtual void MakePlan()
{
Console.WriteLine("指定计划");
}
public virtual void StartBuild()
{
Console.WriteLine("开始建造");
}
public virtual void HalfwayCheckUp()
{
Console.WriteLine("中期检查");
}
public virtual void ContinueBuild()
{
Console.WriteLine("继续建造");
}
public virtual void FinalCheckUp()
{
Console.WriteLine("最终验收");
}
}
public class BridgeBuilder : Builder
{
public override void MakeTarget()
{
Console.WriteLine(">>>建造一座桥");
}
public override void StartBuild()
{
Console.WriteLine("开始造桥");
}
public override void ContinueBuild()
{
Console.WriteLine("继续造桥");
}
}
public class SkyscraperBuilder : Builder
{
public override void MakeTarget()
{
Console.WriteLine(">>>建造一座摩天大楼");
}
public override void FeasibilityStudy()
{
Console.WriteLine("招投标");
}
public override void StartBuild()
{
Console.WriteLine("开始建楼");
}
public override void ContinueBuild()
{
Console.WriteLine("继续建楼");
}
}