1. 程式人生 > >徹底搞懂什麼是建造者模式

徹底搞懂什麼是建造者模式

【前言】

什麼是建造者模式呢,從字面上來看有建造兩個字,首先我們想到的是建造房子。那麼在遊戲中我們常常會遇到不同的角色,有瘦的人物,有胖的的人物,還有高的矮的等等,是否也能用建造者模式來建造的,那麼下面將揭開謎底。

【正文】

首先我們要建立一個固定的介面或者抽象類來定義造小人的細節。

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();
        }
    }

我們從上面可以看出,建造者模式其實就是把一些細節或者說是抽象類給固定死,然後客戶對指揮者發出造小人的通知,指揮者自動調出造小人的全部方法。在這期間,客戶端只需要把自己的需求給指揮者說了就可以了,並不需要客戶端關注細節。