標籤:
iOS設計模式之產生器
1.
產生器模式的定義
(1): 將一個複雜的對象的構件與它的表示分離,使得相同的構建過程能夠建立不同的表示
(2): 產生器模式除了客戶之外還包括一個Director(指導者),和一個builder(產生器).client通過向指導者(Director)提出需求,指導者(Director)向bulider(產生器)提供資訊來建造特定的產品.bulider依據特定的資訊生產產品並返回給客戶.
2:使用產生器的優點
構建某些對象有多種不同的方式,假設這些邏輯包括在構建這些對象的類的單一方法中,構建的邏輯就會非常複雜(比如:針對各種構建需求的一大片潛逃if- else),假設分解為客戶 — 指導者 — 產生器的關係,過程將變得易於管理.
3.產生器模式的UML
Builder :產生器介面,定義建立一個Product各個組件的操作
ConcreteBuilder:詳細的產生器的實作類別
Product:產品,表示被產生器構建的複雜的對象。包括多個組件
Director:指導者也稱導向者。主要用來使用Builder介面。已一個統一的介面建立Product對象
4 .產生器模式與抽象原廠模式的比較
從形式上來講,通過角色合并。方法功能的轉變,抽象工廠能夠和產生器模式形式上取得一致(比方抽象工廠只處理一個產品族,Factory 方法都處理同一個產品)。但注意,這不過形式上的。實際上。抽象工廠和產生器模式有著本質的差別:
1、產生器模式是為了構造一個複雜的產品,並且購造這個產品遵循一定的規則(同樣的過程),而抽象工廠則是為了建立成族的產品(系列產品)。同族產品的構造在邏輯上並不存在必定的聯絡(唯一必定的聯絡就是大家都屬於一族)。
2、產生器模式的構造方法是為了構造同一個產品,因此必須有指導者來協調進行工作。構造方法之間存在必定的業務聯絡,而抽象工廠的構造方法都是獨立去構建自己的產品對象。因此他們不存在必定的聯絡。
在產生器模式中client不直接調用構建產品部分的方法來擷取終於產品。而抽象工廠中client是通過調用不同的Factory 方法擷取不同的產品。
3.在產生器模式中,那些用來構造產品不同部分的方法一般都實現為Protected形式,以防止client通過調用這樣的方法活得不可預料的結果。而抽象工廠中的這些方法必須為Public形式。否則客戶無法調用來獲得產品結果;
4.產生器模式的角色有產生器。產品和指導者,而抽象工廠的角色有工廠和產品。
不管角色和功能如何變換,但所含的商務邏輯角色都應該存在,這也是兩個模式的業務本質。
iOS設計模式之產生器