C# 設計模式———建造者模式

建造者模式簡介

將一個複雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。
在這裏插入圖片描述
在這樣的設計模式中,有以下幾個角色:
1 builder:爲創建一個產品對象的各個部件指定抽象接口。
2 ConcreteBuilder:實現Builder的接口以構造和裝配該產品的各個部件,定義並明確它所創建的表示,並 提供一個檢索產品的接口。
3 Director:構造一個使用Builder接口的對象。
4 Product:表示被構造的複雜對象。ConcreteBuilder創建該產品的內部表示並定義它的裝配過程,包含定義組成部件的類,包括將這些部件裝配成最終產品的接口。

何時使用:

  1. 需要生成的對象具有複雜的內部結構。
  2. 需要生成的對象內部屬性本身相互依賴。
  3. 一些基本部件不會變,而其組合經常變化的時候。

Hints: 與工廠模式的區別是:建造者模式更加關注與零件裝配的順序。

C# 建築者模式Demo

在這裏插入圖片描述
AbstractPerson.cs

namespace ConstructionPattern
{
    public abstract class AbstractPerson
    {
        public abstract void CreateBody();
        public abstract void CreateHand();
        public abstract void CreateHead();
        public abstract void CreateLeg();
    }
}

FatPerson.cs

using System;

namespace ConstructionPattern
{
    public class FatPerson : AbstractPerson
    {
        public override void CreateBody()
        {
            Console.WriteLine("生成胖人的身體");
        }

        public override void CreateHand()
        {
            Console.WriteLine("生成胖人的手");
        }

        public override void CreateHead()
        {
            Console.WriteLine("生成胖人的頭部");
        }

        public override void CreateLeg()
        {
            Console.WriteLine("生成胖人的腿");
        }
    }
}

ThinPerson.cs

using System;

namespace ConstructionPattern
{
    public class ThinPerson : AbstractPerson
    {
        public override void CreateBody()
        {
            Console.WriteLine("生成瘦人的身體");
        }

        public override void CreateHand()
        {
            Console.WriteLine("生成瘦人的手");
        }

        public override void CreateHead()
        {
            Console.WriteLine("生成瘦人的頭部");
        }

        public override void CreateLeg()
        {
            Console.WriteLine("生成瘦人的腿");
        }
    }
}

BuilderDirector.cs

namespace ConstructionPattern
{
    public class BuilderDirector
    {
        AbstractPerson person = null;

        public BuilderDirector(AbstractPerson person)
        {
            this.person = person;
        }
        public void CreatePerson()
        {
            this.person.CreateBody();
            this.person.CreateHand();
            this.person.CreateHead();
            this.person.CreateLeg();
        }
    }
}

Program.cs

namespace ConstructionPattern
{
    class Program
    {
        static void Main(string[] args)
        {
            BuilderDirector builderDirector = new BuilderDirector( new FatPerson() );
            builderDirector.CreatePerson();

            builderDirector = new BuilderDirector(new ThinPerson());
            builderDirector.CreatePerson();
        }
    }
}

測試結果:
在這裏插入圖片描述

建造者獨立,易擴展。便於控制細節風險。

更多:

23種設計模式C#

發佈了27 篇原創文章 · 獲贊 25 · 訪問量 3307
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章