06-建造者模式

建造者模式(生成器模式)

一、定義

將一個複雜對象的構造與它的表示分離,使得同樣的構建過程可以創建不同的表示

建造者模式通用類圖
在這裏插入圖片描述
建造者模式源碼

  1. 產品類

    public class Product {
    	public void doSomething(){
    		//獨立業務處理
    	}
    }
    
  2. 抽象建造者

    public abstract class Builder {
    	//設置產品的不同部分,以獲得不同的產品
    public abstract void setPart();
    	//建造產品
    public abstract Product buildProduct();
    }
    
  3. 具體建造者

    public class ConcreteBuilder extends Builder {
    	private Product product = new Product();
    	//設置產品零件
     	public void setPart(){
    	/*
    	* 產品類內的邏輯處理
    	*/
    	}
    	//組建一個產品
    	public Product buildProduct() {
    		return product;
    	}
    }
    
  4. 導演類

    public class Director {
    	private Builder builder = new ConcreteProduct();
    	//構建不同的產品
    	public Product getAProduct(){
    		builder.setPart();
    		//設置不同的零件,產生不同的產品
    		return builder.buildProduct();
    	}
    }
    

    導演類起到封裝的作用,避免高層模塊深入到建造者內部的實現類

二、建造者模式的優點

  • 封裝性

    使用建造者模式可以使客戶端不必知道產品內部的細節。

  • 建造者獨立,容易擴展

    需要新添加一個產品類型時,添加一個新的建造者模式即可,無需修改原來內容

  • 便於控制細節風險

    由於具體的的建造者是獨立的,因此可以對建造過程逐步細化,而不對其他的模塊產生任何影響

三、建造者模式的使用場景

  • 相同的方法,不同的執行順序,產生不同的事件結果時

  • 多個部件或零件,都可以裝配到一個對象中,但是產生的運行結果又不相同時

  • 在對象創建過程中會使用到系統中的一些其他對象,這些對象在產品對象的創建過程中不易得到時

注意:建造者模式關注的是零件類型和裝配順序,模板方法關注的是它的對象創建,不關注組建的順序,這是它與工廠方法模式最大不同的地方,

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章