C# 设计模式之---建造者模式
一、定义:
建造者模式(Builder)是将复杂的构建与其表示相分离,使得同样的构建可以产生不同的表示。
二、原型模式应用:
在软件系统中,有时候面临一个复杂对象的创建工作,该对象通常由各个部分对象用一定算法构成,
或者按一定的步骤组合而成,这些算法和步骤是稳定的,而构成这个对象的子对象却经常由于需求的变化而不断变化。
举个例子,比如一个工厂要生产奔驰和宝马两种车子,它们组装的过程基本都是不变的,都可以由
logo,车身,轮子,椅子等构成,但是这些零件在奔驰和宝马这两种车子之间又是多变的,那么将一些易变的两件与其他部件分离出来,实现解耦合,则可以轻松实现车子的升级。
三、建造者欧式参与者
①Builder:为创建一个 product对象的各个部件指定抽象接口;
②ConcreateBuilder
1>实现Builder的接口以构造和装配该产品的各个部件
2>定义并明确它所创建的表示
③Director:构造一个使用Builder接口的对象;
④Product:表示被构造的复杂对象。ConcreateBuilder创建该产品的内部表示并定义它的装配过程。
在建造者模式中,Director规定了创建一个对象所需要的步骤和次序,builder则提供了一些完成这些步骤的方法,ConcreateBuilder给出了这些方法的具有实现,是对象的直接创建者。
四、构建者模式实现
Director.cs
namespace BuilderExample { public class Director { public void Constructor(IBuilder builder) { builder.CreateLogo(); builder.CreateBody(); builder.CreateWheel(); builder.CreateChair(); } } }
IBuilder.cs
namespace BuilderExample { public interface IBuilder { void CreateLogo(); void CreateBody(); void CreateWheel(); void CreateChair(); } }
Benz.cs
using System; namespace BuilderExample { public class Benz : IBuilder { public void CreateLogo() { Console.WriteLine("创建奔驰的logo"); } public void CreateBody() { Console.WriteLine("创建奔驰的身体"); } public void CreateWheel() { Console.WriteLine("创建奔驰的轮子"); } public void CreateChair() { Console.WriteLine("创建奔驰的椅子"); } } }
BMW.cs
using System; namespace BuilderExample { public class BMW : IBuilder { public void CreateLogo() { Console.WriteLine("创建宝马的logo"); } public void CreateBody() { Console.WriteLine("创建宝马的身体"); } public void CreateWheel() { Console.WriteLine("创建宝马的轮子"); } public void CreateChair() { Console.WriteLine("创建宝马的椅子"); } } }
Program.cs
using System; namespace BuilderExample { class Program { static void Main(string[] args) { Director director = new Director(); director.Constructor(new Benz()); director.Constructor(new BMW()); Console.ReadLine(); } } }
来源:https://www.cnblogs.com/vpersie2008/p/4641583.html