徹底搞懂什麼是建造者模式
阿新 • • 發佈:2018-12-26
【前言】
什麼是建造者模式呢,從字面上來看有建造兩個字,首先我們想到的是建造房子。那麼在遊戲中我們常常會遇到不同的角色,有瘦的人物,有胖的的人物,還有高的矮的等等,是否也能用建造者模式來建造的,那麼下面將揭開謎底。
【正文】
首先我們要建立一個固定的介面或者抽象類來定義造小人的細節。
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();
}
}
我們從上面可以看出,建造者模式其實就是把一些細節或者說是抽象類給固定死,然後客戶對指揮者發出造小人的通知,指揮者自動調出造小人的全部方法。在這期間,客戶端只需要把自己的需求給指揮者說了就可以了,並不需要客戶端關注細節。