unity中的建造者模式

using System.Collections.Generic;
using UnityEngine;

public class BuilderPattern : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        IBuilder fatbuilder = new FatBuilder();
        Person p = Director.Construct(fatbuilder);
        p.Show();
    }
}

class Person
{
    List<string> parts = new List<string>();
    public void AddPart(string part)
    {
        parts.Add(part);
    }

    public void Show()
    {
        foreach (string part in parts)
        {
            Debug.Log(part);
        }
    }
}

class FatPerson : Person { }

class ThinPerson : Person { }

interface IBuilder
{
    void AddHead();
    void AddBody();
    void AddHand();
    void AddFeet();
    Person GetResult();
}

class FatBuilder : IBuilder
{
    private Person person;

    public FatBuilder()
    {
        person = new Person();
    }
    public void AddBody()
    {
        person.AddPart("bigbody");
    }

    public void AddFeet()
    {
        person.AddPart("bigfeet");
    }

    public void AddHand()
    {
        person.AddPart("bighand");
    }

    public void AddHead()
    {
        person.AddPart("bighead");
    }

    public Person GetResult()
    {
        return person;
    }
}

class ThinBuilder : IBuilder
{
    private Person person;

    public ThinBuilder()
    {
        person = new Person();
    }
    public void AddBody()
    {
        person.AddPart("thinbody");
    }

    public void AddFeet()
    {
        person.AddPart("thinfeet");
    }

    public void AddHand()
    {
        person.AddPart("thinhand");
    }

    public void AddHead()
    {
        person.AddPart("thinhead");
    }

    public Person GetResult()
    {
        return person;
    }
}

class Director
{
    public static Person Construct(IBuilder builder)
    {
        builder.AddHand();
        builder.AddBody();
        builder.AddHand();
        builder.AddFeet();
        return builder.GetResult();
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章