建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
Builder 是为创建一个 Product 对象的各个部件指定的抽象接口。 指定了产品都有什么东西。
ConcreteBuilder 是具体的建造者,实现 Builder 接口,构造和装配各个部件。 各种产品的某个属性是什么样子的
Product 就是那些具体的人 产品
Director 是指挥者 是构建一个使用Builder 接口的对象。主要用于创建一些复杂的对象,这些对象内部构建的建造顺序通常是稳定的 稳定的建造顺序有指挥者定。但每个对象内部的构建又是变化的,就是走ConcreteBuilder 内部的具体流程。 像流水线一样 大的流程有指挥者控制,具体每个流程做什么由具体建造者自己决定。
当需要改变产品内部的表示时 需要在定义一个具体的建造者。
using UnityEngine;
public class BuilderStudy : MonoBehaviour {
// Use this for initialization
void Start () {
PersonDirector pd = new PersonDirector(new FatPersonBuilder());
pd.CreatPerson();
}
}
/// <summary>
/// 指挥者
/// 指挥者可以规范 建造的一个过程
/// </summary>
public class PersonDirector
{
private PersonBuilder pb;
public PersonDirector(PersonBuilder pb)
{
this.pb = pb;
}
public void CreatPerson()
{
//可以规范pb的过程
pb.Step1();
pb.Step2();
}
}
/// <summary>
/// 建造者
/// </summary>
public abstract class PersonBuilder
{
public abstract void CreatPerson();
public abstract void Step1();
public abstract void Step2();
}
public class FatPersonBuilder : PersonBuilder
{
public override void CreatPerson()
{
Debug.Log("//胖人工厂 创建胖子");
}
public override void Step1()
{
}
public override void Step2()
{
}
}
public class ThinPersonBuilder : PersonBuilder {
public override void CreatPerson() {
Debug.Log("//瘦人工厂 创建瘦子");
}
public override void Step1()
{
}
public override void Step2()
{
}
}