C#设计模式-建造者模式
2018-12-15 16:59
148 查看
[code]using System; using System.Collections.Generic; namespace TestCS { class Program { static void Main(string[] args) { Director director = new Director(); Builder builder0 = new MaseratiBuilder(); Builder builder1 = new BMWBuilder(); director.Construct(builder0); builder0.GetVehicle().Run(); director.Construct(builder1); builder1.GetVehicle().Run(); Console.ReadKey(); } class Director { public void Construct(Builder builder) { builder.BuildEngine(); builder.BuildUnderpan(); } } abstract class Builder { public abstract void BuildEngine(); public abstract void BuildUnderpan(); public abstract Vehicle GetVehicle(); } class MaseratiBuilder : Builder { Maserati m_Maserati = new Maserati(); public override void BuildEngine() { m_Maserati.CreateEngine(); } public override void BuildUnderpan() { m_Maserati.CreateUnderpan(); } public override Vehicle GetVehicle() { return m_Maserati; } } class BMWBuilder : Builder { BMW m_BMW = new BMW(); public override void BuildEngine() { m_BMW.CreateEngine(); } public override void BuildUnderpan() { m_BMW.CreateUnderpan(); } public override Vehicle GetVehicle() { return m_BMW; } } abstract class Vehicle { public abstract void CreateEngine(); public abstract void CreateUnderpan(); public abstract void Run(); } class Maserati : Vehicle { public Part m_Engine; public Part m_Underpan; public override void CreateEngine() { m_Engine = new MaseratiEngine(); } public override void CreateUnderpan() { m_Underpan = new MaseratiUnderpan(); } public override void Run() { Console.WriteLine(string.Format("Run Maserati With Parts: {0}, {1}. ", m_Engine.GetName(), m_Underpan.GetName())); } } class BMW : Vehicle { public Part m_Engine; public Part m_Underpan; public override void CreateEngine() { m_Engine = new BMWEngine(); } public override void CreateUnderpan() { m_Underpan = new BMWUnderpan(); } public override void Run() { Console.WriteLine(string.Format("Run BMW With Parts: {0}, {1}. ", m_Engine.GetName(), m_Underpan.GetName())); } } abstract class Part { public abstract string GetName(); } class MaseratiEngine : Part { public override string GetName() { return "Maserati Engine"; } } class MaseratiUnderpan : Part { public override string GetName() { return "Maserati Underpan"; } } class BMWEngine : Part { public override string GetName() { return "BMW Engine"; } } class BMWUnderpan : Part { public override string GetName() { return "BMW Underpan"; } } } }
相关文章推荐
- C#设计模式之建造者(Builder)模式示例源代码(外摘)
- C#设计模式之建造者(Builder)模式示例源代码
- C#设计模式—建造者模式
- 【C#设计模式-建造者模式】
- c#设计模式- Builder模式(建造者模式)
- C# 设计模式巩固笔记 - 建造者模式
- C#设计模式之五建造者模式(Builder)【创建型】
- c#设计模式-建造者模式
- C#设计模式--建造者模式
- C#设计模式-建造者模式
- C# 设计模式之 建造者模式
- C#设计模式之建造者模式
- [C#]设计模式-建造者模式-创建型模式
- C#设计模式学习笔记-建造者模式
- C# 设计模式系列教程-建造者模式
- C#设计模式--建造者模式
- C#--设计模式之建造者模式
- C#设计模式05-建造者模式
- c#设计模式-建造者模式
- C#设计模式之建造者(Builder)模式示例源代码