23種設計模式----------建造者模式

來源:互聯網
上載者:User

標籤:style   blog   ar   color   os   sp   on   div   art   

建造者模式:像是模板方法模式的升級。也叫產生器模式。將一個複雜物件的構造與它的表示分離,使得同樣的構建過程可以建立不同的表示。其實就是建立一大類的東西, 但是具體又有些差異。

在建造者模式中,一般有四個角色:

1,Product產品類。

  該類一般實現了模板方法模式。

2,Builder抽象的建造者。

  規範產品的組建,一般是由子類實現。

3,ConcreteBuilder具體的建造者。

  實現抽象類別定義的所有方法,並且可以返回一個組建好的具體對象。

4,Director導演類(一般是包涵多種具體產品差異的方法)。

大致範例程式碼:

Product類:

1 package com.yemaozi.builderpattern;2 3 public abstract class Product {4     //一般實現模板方法的抽象類別。5 }

具體的Product類:

//ProductApackage com.yemaozi.builderpattern;public class ProductA extends Product{    public void doSomething(){            }}//ProductBpackage com.yemaozi.builderpattern;public class ProductB extends Product{    public void doSomethding(){            }}

建造器:

1 package com.yemaozi.builderpattern;2 3 public interface Builder {4     //設定產品不同的方法5     public abstract void setPart();6     //構建產品7     public abstract Product builderProduct();8 }

具體的建造器,具體的建造器個數與具體產品類的數目一致。

 1 //ConcreteBuilderA 2 package com.yemaozi.builderpattern; 3  4 public class ConcreteBuilderA implements Builder{ 5  6     Product p = new ProductA(); 7      8     public void setPart() { 9     }10 11     public Product builderProduct() {12         return p;13     }14 }15 //ConcreteBuilderB16 package com.yemaozi.builderpattern;17 18 public class ConcreteBuilderB implements Builder{19 20     Product p = new ProductB();21     22     public void setPart() {23     }24     25     public Product builderProduct() {26         return p;27     }28 }

導演類:導演類一般是為了預設定不同產品差異的,若是想得到對應的產品,直接到Director裡擷取,因為,該類就是為了生產出所有的產品,以供擷取。導演類一般可以有多個。

 1 package com.yemaozi.builderpattern; 2  3 public class Director { 4     private Builder b1 = new ConcreteBuilderA(); 5     private Builder b2 = new ConcreteBuilderB(); 6     //構建A產品 7     public Product getProductA(){ 8         b1.setPart(); 9         Product p = b1.builderProduct();10         return p;11     }12     //構建B產品13     public Product getProductB(){14         b2.setPart();15         return b2.builderProduct();16     }17 }

此外,建造者模式還有一個重要的角色,就是零件(理解為產品類裡的方法),建造者是通過零件的組裝來建立對象。組裝順序不同(調用方法順序不同),建造的對象就會有著差異,也是,建造者模式要表達的核心意義。說白了,建造者最主要的功能是基本方法的調用順序的安排。

和原廠模式的差異:

  Factory 方法模式重點是建立。建立零件是它的主要職責,組裝順序不是它關心的。

  建造者模式重點是對已產生的零件進行組裝。從而也達到建立對象的效果。

 

23種設計模式----------建造者模式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.