1. 程式人生 > 程式設計 >php安裝grpc擴充套件的具體步驟

php安裝grpc擴充套件的具體步驟

建造者模式是一種建立型設計模式(有的也稱之為生成器模式), 使你能夠分步驟建立複雜物件。 該模式允許你使用相同的建立程式碼生成不同型別和形式的物件。

建造者模式定義

建造者模式是一種建立型設計模式(有的也稱之為生成器模式), 使你能夠分步驟建立複雜物件。 該模式允許你使用相同的建立程式碼生成不同型別和形式的物件。

建造者模式結構

  1. 建造者/生成器(Builder):清晰的定義通用步驟,確保它們可以製造所有形式的產品。 否則你將無法進一步實施該模式。
  2. 具體建造者(ConcreteBuilder):每個形式的產品建立具體生成器類, 並實現其構造步驟。
  3. 指揮者(Director):它可以使用同一生成器物件來封裝多種構造產品的方式。

建造者模式實現

場景:蓋房子,房子都有房頂、四面牆壁、窗戶和門,可以使用不同的材料,例如,第一個建造者使用木頭和玻璃,第二個建造者使用石頭和鋼鐵。在呼叫一組步驟後,第一個建造者得到的是一棟普通房屋,第二棟得到的是一棟城堡

使用程式碼簡單實現一下:

宣告建立房屋通用步驟的介面

   public interface IHouseBuilder
    {
        void buildWall();
        void buildRoof();
        void buildWindow();
        void buildDoor();
        void buildResult();
    }

建立具體建造者,繼承介面並實現

public class House : IHouseBuilder
    {
        public void buildDoor()
        {
            Console.WriteLine("裝房門");
        }

        public void buildResult()
        {
            Console.WriteLine("普通木屋");
        }

        public void buildRoof()
        {
            Console.WriteLine("蓋房頂");
        }

        public void buildWall()
        {
            Console.WriteLine("蓋牆壁");
        }

        public void buildWindow()
        {
            Console.WriteLine("安裝窗戶");
        }
    }

建立指揮者,用於構建和組織步驟

public class HouseDirector
    {

        public void Construct(IHouseBuilder houseBuilder)
        {
            houseBuilder.buildWall();
            houseBuilder.buildWall();
            houseBuilder.buildWindow();
            houseBuilder.buildDoor();
        }
    }

客戶端呼叫

static void Main(string[] args)
        {
            HouseDirector houseDirector = new HouseDirector();

            Console.WriteLine("------------------蓋一棟普通木屋------------------");
            IHouseBuilder houseBuilder1 = new House();
            houseDirector.Construct(houseBuilder1);
            houseBuilder1.buildResult();

            Console.WriteLine("------------------蓋一棟城堡------------------");
            IHouseBuilder houseBuilder2 = new Tower();
            houseDirector.Construct(houseBuilder2);
            houseBuilder2.buildResult();

            Console.WriteLine("Press Any Key to end!");
            Console.ReadKey();
        }

輸出結果

建造者模式優缺點

優點

  • 可以分步建立物件, 暫緩建立步驟或遞迴執行建立步驟。
  • 生成不同形式的產品時, 你可以複用相同的製造程式碼。
  • 單一職責原則。 你可以將複雜構造程式碼從產品的業務邏輯中分離出來。

缺點

  • 由於該模式需要新增多個類, 因此程式碼整體複雜程度會有所增加。

建造者模式使用場景

  • 當你希望使用程式碼建立不同形式的產品(例如石頭或木頭房屋)時,可使用生成器模式
  • 使用生成器構造組合樹或其他複雜物件。

示例原始碼

原始碼倉庫地址:https://github.com/luchong0813/DesignModel