通过专门的建造者类实现具体对象不同部件的创建,进而隐藏对象创建的具体过程。
namespace Builder.Demo
{
public abstract class Host
{
public abstract void Display();
}
}
namespace Builder.Demo
{
public abstract class Screen
{
public abstract void Display();
}
}
namespace Builder.Demo
{
public abstract class Keyboard
{
public abstract void Display();
}
}
namespace Builder.Demo
{
public abstract class Mouse
{
public abstract void Display();
}
}
namespace Builder.Demo
{
public class Computer
{
public Host Host { get; set; }
public Screen Screen { get; set; }
public Keyboard Keyboard { get; set; }
public Mouse Mouse { get; set; }
public Computer() { }
public void Display()
{
Console.WriteLine("--------------------------------------");
this.Host.Display();
this.Screen.Display();
this.Keyboard.Display();
this.Mouse.Display();
Console.WriteLine("电脑整机组装完毕,可以愉快的玩耍了!");
}
}
}
namespace Builder.Demo
{
public class HpHost : Host
{
public override void Display()
{
Console.WriteLine("惠普主机生产完毕!");
}
}
}
namespace Builder.Demo
{
public class HpScreen : Screen
{
public override void Display()
{
Console.WriteLine("惠普屏幕生产完毕!");
}
}
}
namespace Builder.Demo
{
public class HpKeyboard : Keyboard
{
public override void Display()
{
Console.WriteLine("惠普键盘生产完毕!");
}
}
}
namespace Builder.Demo
{
public class HpMouse : Mouse
{
public override void Display()
{
Console.WriteLine("惠普鼠标生产完毕!");
}
}
}
namespace Builder.Demo
{
public abstract class ComputerBuilder
{
protected Computer _computer;
public ComputerBuilder()
{
_computer = new Computer();
}
protected abstract void BuildHost();
protected abstract void BuildScreen();
protected abstract void BuildKeyboard();
protected abstract void BuildMouse();
public Computer Build()
{
BuildHost();
BuildScreen();
BuildKeyboard();
BuildMouse();
return _computer;
}
}
}
namespace Builder.Demo
{
public class HpComputerBuilder : ComputerBuilder
{
protected override void BuildHost()
{
this._computer.Host = new HpHost();
}
protected override void BuildKeyboard()
{
this._computer.Keyboard = new HpKeyboard();
}
protected override void BuildMouse()
{
this._computer.Mouse = new HpMouse();
}
protected override void BuildScreen()
{
this._computer.Screen = new HpScreen();
}
}
}
namespace Builder.Demo
{
class Program
{
static void Main(string[] args)
{
ComputerBuilder computerBuilder = new HpComputerBuilder();
Computer computer = computerBuilder.Build();
computer.Display();
Console.ReadLine();
}
}
}