比如说组装机电脑,是很多东西组建成的。
//产品类,复杂的产品是由多种东西组成的
public class ComputeProduct {
private string cpu;
private string gpu;
private string look;
public void setCup(string cup) { this.cpu = cpu; }
public void setGpu(string gpu) { this.gpu = gpu; }
public void setLook(string look) { this.look = look;}
}//构建的抽象类
public interface IBuild {
void buildGpu(string gpu);
void buildCPU(string cpu);
void buildLook(string look);
ComputeProduct GetResult();
}//具体的构造类
public class ComputerBuild : IBuild
{
private ComputeProduct computer = new ComputeProduct();
public void buildCPU(string cpu)
{
computer.setCup(cpu);
}
public void buildGpu(string gpu)
{
computer.setGpu(gpu);
}
public void buildLook(string look)
{
computer.setLook(look);
}
public ComputeProduct GetResult()
{
return computer;
}
}//指挥类,控制组装的顺序
public class Direction {
private IBuild build;
public Direction(IBuild build)
{
this.build = build;
}
public ComputeProduct BuildComputer(string cpu, string gpu, string look)
{
build.buildCPU(cpu);
build.buildGpu(gpu);
build.buildLook(look);
return build.GetResult();
}
}//使用
using UnityEngine;
public class testBuild : MonoBehaviour {
void Start () {
IBuild build = new ComputerBuild();
Direction dir = new Direction(build);
dir.BuildComputer("ffg", "ttr", "beauty");
}
}如果某个产品是很复杂的,且由一定的组件构造起来的,我们就可以使用构造者模式。易于扩展,但是使用得有点多余的,浪费内存。