生成器模式是將一個復雜的對象的構建與它的表示分離,使同樣的構建過程可能創建不同的表示.
是為了將構建復雜對象的過程和它的部件解耦.注意: 是解耦過程和部件.
因為一個復雜的對象,不但有很多大量組成部分,如汽車,有很多部件:車輪 方向盤 發動機還有各種小零件等等,部件很多,但遠不止這些,如何將這些部件裝配成一輛汽車,這個裝配過程也很復雜(需要很好的組裝技術),Builder模式就是為了將部件和組裝過程分開.
生成器的組成部份:
1.產品: 復雜對象
2.抽象生成器:抽象生成器是一個接口,該接口除了創建一個產品對象的各個組件定義了若干方法以外,還要定義返回project;
3.具體生成器:實現抽象生成器的方法
4.指揮者:它是一個類,該類含有抽象生成器的接口生成變量.它的職責是根據用戶提供的生成器的種類來生成具體的產品對象.
生成器各部份之間的關系:
當客戶需要一個產品時,把需要的參數傳遞個導向器,導向器根據傳遞的參數調用具體的生成器,具體的生成器通過一系列的操作(getAnimal()通過調用其它的接口方法實現)最會返回一個產品。
結論:生成器模式使得客戶可以更加精細的控制一個對象的構建,每個具體的創建者包含了創建和裝配一個特定產品的所有代碼,這些代碼只用寫一次,便可以被不同的Director使用,從而可以裝配出不同的對象。
和抽象工廠的區別: