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