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();
}
}
建造者模式
最新推荐文章于 2023-07-28 11:29:23 发布