其实就是需要什么创建什么,把需要的东西组装起来,接下类是实例
比如创建一个人物模型,在游戏开发中人物可以进行组装。
创建一个人物基类
//人物基类
public class RoleBase
{
在unity中都是以object表示
public Object Head { get; set; }
public Object Arm { get; set; }
public Object Body { get; set; }
public Object Foot { get; set; }
}
再创建一个Builder抽象类
//抽象类
public abstract class RoleBuilder
{
public abstract void CreateHead();
public abstract void CreateArm();
public abstract void CreateBody();
public abstract void CreateFoot();
public abstract RoleBase GetRole();
}
接下类抽象类的实现
//具体实现
public class ConcreateBuilder : RoleBuilder
{
private RoleBase _role;
public RoleBase Role
{
get
{
if(_role == null)
{
_role = new RoleBase();
}
return _role;
}
}
public override void CreateArm()
{
Object Arm = new Object();
Role.Arm = Arm;
}
public override void CreateBody()
{
Object Body = new Object();
Role.Body = Body;
}
public override void CreateFoot()
{
Object Foot = new Object();
Role.Foot = Foot;
}
public override void CreateHead()
{
Object Head = new Object();
Role.Head = Head;
}
//获得这个Role,以上则是需要组装的零件
public override RoleBase GetRole()
{
return Role;
}
}
//接下是调用builder类
//导演类1
public class Director
{
private RoleBuilder concreatebuilder;
//初始化的时候赋值
public Director(RoleBuilder builder)
{
concreatebuilder = builder;
}
//创建的方法
public void construct()
{
concreatebuilder.CreateArm();
concreatebuilder.CreateBody();
}
}
接下来就是组装完成
//先初始化builder
RoleBuilder builder = new ConcreateBuilder();
//传进去
Director dir = new Director(builder);
//调用组装方法
dir.construct();
//通过builder里面的builder.GetRole()方法得到最终的角色
RoleBase productor = builder.GetRole();
最终全部代码,在实际游戏开中用的还是比较多的,如果要用的话,还需按实际情况做更改。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Builder : MonoBehaviour {
private void Start()
{
RoleBuilder builder = new ConcreateBuilder();
Director dir = new Director(builder);
dir.construct();
//得到最终的角色
RoleBase productor = builder.GetRole();
}
}
//人物基类
public class RoleBase
{
public Object Head { get; set; }
public Object Arm { get; set; }
public Object Body { get; set; }
public Object Foot { get; set; }
}
//抽象类
public abstract class RoleBuilder
{
public abstract void CreateHead();
public abstract void CreateArm();
public abstract void CreateBody();
public abstract void CreateFoot();
public abstract RoleBase GetRole();
}
//具体实现
public class ConcreateBuilder : RoleBuilder
{
private RoleBase _role;
public RoleBase Role
{
get
{
if(_role == null)
{
_role = new RoleBase();
}
return _role;
}
}
public override void CreateArm()
{
Object Arm = new Object();
Role.Arm = Arm;
}
public override void CreateBody()
{
Object Body = new Object();
Role.Body = Body;
}
public override void CreateFoot()
{
Object Foot = new Object();
Role.Foot = Foot;
}
public override void CreateHead()
{
Object Head = new Object();
Role.Head = Head;
}
public override RoleBase GetRole()
{
return Role;
}
}
//导演类
public class Director
{
private RoleBuilder concreatebuilder;
public Director(RoleBuilder builder)
{
concreatebuilder = builder;
}
//创建的方法
public void construct()
{
concreatebuilder.CreateArm();
concreatebuilder.CreateBody();
}
}