建造者模式

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class JianZaoMVC : MonoBehaviour {

	
	void Start () {
        RoleBuilder builder = new ConreteBuilder();
        Director dir = new Director(builder );
        dir.Construct();

        //得到創建後的角色
        RoleBase productor = builder.GetRole();

    }
}
/// <summary>
/// 角色基類
/// </summary>
public class RoleBase
{
    public Object Head { get; set; }
    public Object Arm { get; set; }
    public Object Body { get; set; }
    public Object Foot { get; set; }

}

/// <summary>
/// 將部位抽象 
/// </summary>
public abstract class RoleBuilder
{
    public abstract void CreateHead();
    public abstract void CreateArm();
    public abstract void CreateBody();
    public abstract void CreateFoot();

    public abstract RoleBase GetRole();
}
/// <summary>
/// 繼承並實現具體方法
/// </summary>
public class ConreteBuilder : RoleBuilder
{
    private RoleBase _role;
    public RoleBase Role
    {
        get
        {
            if(_role==null)
            {
                _role = new RoleBase();
            }
            return _role;
        }
    }

    public override void CreateArm()
    {
        Object head = new Object();
        Role.Head = head;
    }

    public override void CreateBody()
    {
        Object arm = new Object();
        Role.Arm  = arm;
    }

    public override void CreateFoot()
    {
        Object body  = new Object();
        Role.Body = body;
    }

    public override void CreateHead()
    {
        Object foot = new Object();
        Role.Foot  = foot;
    }

    public override RoleBase GetRole()
    {
        return Role;
    }
}

/// <summary>
/// 導演類  要什麼給他說讓他去創建
/// </summary>
public class Director
{
    private RoleBuilder concretebuilder;
    public Director (RoleBuilder builder)
    {
        concretebuilder = builder;
    }
    /// <summary>
    /// 創建Object
    /// </summary>
    public void Construct()
    {
        concretebuilder.CreateArm();
        concretebuilder.CreateFoot();
    }
}

發佈了58 篇原創文章 · 獲贊 2 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章