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();
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值