1 前言
有時候,構建某些對象有多種不同方式。如果這些邏輯包含在構建這些對象的類中的單一方法中,構建的邏輯會非常荒唐(例如,針對各種構建需求的一大片嵌套if-else或者switch-case語句)。如果能把構建過程分解為:客戶-指導者-生成器(client-director-builder)的關系,那麼過程將更容易管理與復用。針對此類關系的設計模式成為生成器。
2 詳述
2.1 簡述
除了客戶和所需要的產品,生成器模式包含連個角色:Director(指導者)和Builder(生成器)。Builder知道如何在缺少某些特定信息來建造特點產品。Director知道Builder應該如何建造什麼,以參數向其提供缺少的信息來建造特定產品。
生成器模式講一個復雜對象的構建與它的表現分離,使得同樣的構建過程可以創建不同的表現。
2.2 何時使用
(1)需要創建涉及各種部件的復雜對象。創建對象的算法應該獨立於部件的裝配方式。常見的例子是構建組合對象。
(2)構建過程需要以不同的方式(例如,部件或表現的不同組合)構建對象。
2.3 生成器與抽象工廠的對比
(1)生成器構建復雜對象,抽象工廠構建簡單或者復雜對象;
(2)生成器以多個步驟構建對象,抽象工廠以單一步驟構建對象;
(3)生成器以多種方式構建對象昂,抽象工廠以單一步驟構建對象;
(4)生成器在構建過程的最後一步返回產品,抽象工廠立刻返回產品;
(5)生成器專注一個特定產品,抽象工廠強調一套產品。
3 結語
生成器模式能幫助構建涉及部件與表現的各種組件的對象。
以上是所有內容,希望對大家有所幫助。