【前言】
什么是建造者模式呢,从字面上来看有建造两个字,首先我们想到的是建造房子。那么在游戏中我们常常会遇到不同的角色,有瘦的人物,有胖的的人物,还有高的矮的等等,是否也能用建造者模式来建造的,那么下面将揭开谜底。
【正文】
首先我们要创建一个固定的接口或者抽象类来定义造小人的细节。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 建造者设计模式__造小人
{
//造人的一些固定接口
abstract class PersonBuilder
{
public PersonBuilder() { }
//造小人的头
public abstract void BuildHead();
//造身体
public abstract void BuildBody();
//造手
public abstract void BuildLeg();
}
//造瘦子人
class PersonThinBuilder : PersonBuilder
{
public override void BuildBody()
{
Console.WriteLine("小身体");
}
public override void BuildHead()
{
Console.WriteLine("小头");
}
public override void BuildLeg()
{
Console.WriteLine("小腿");
}
}
然后创建一个指挥者类来负责指挥如何造人
//指挥者,负责指挥如何造人
class PersonDirector
{
private PersonBuilder pb;
public PersonDirector(PersonBuilder pb)
{
this.pb = pb;
}
public void CreatePerson()
{
pb.BuildBody();
pb.BuildHead();
pb.BuildLeg();
}
}
最后客户端实现:
class Program
{
static void Main(string[] args)
{
PersonThinBuilder p = new PersonThinBuilder();
PersonDirector director = new PersonDirector(p);
director.CreatePerson();
}
}
我们从上面可以看出,建造者模式其实就是把一些细节或者说是抽象类给固定死,然后客户对指挥者发出造小人的通知,指挥者自动调出造小人的全部方法。在这期间,客户端只需要把自己的需求给指挥者说了就可以了,并不需要客户端关注细节。