設計模式(六)【Abstract Factory模式】
阿新 • • 發佈:2019-01-12
Abstract Factory模式
《設計模式》:為建立一組或相互依賴的物件提供一個介面,而且無需指定它們的具體類。
示例
需求:給不同機器的配置不同驅動程式:
驅動功能 | 在低配置機上,使用…… | 在高配置機上,使用…… |
---|---|---|
顯示 | LRDD低解析度顯示驅動程式 | HRDD高解析度顯示驅動程式 |
列印 | LRPD低解析度列印驅動程式 | HRPD高解析度列印驅動程式 |
- 如果使用switch-case結構,會導致緊耦合、低內聚
- 如果直接使用繼承,會造成組合爆炸,含義不清。
- 如果直接組合顯示驅動程式抽象類和列印驅動程式抽象類也會組合多餘(比如,低解析度顯示+高解析度列印)。
解決方案
建立:
1、抽象工廠ResFactory
2、具體工廠LowResFactory和HighResFactory
Abstract Factory模式 | 關鍵特徵 |
---|---|
意圖 | 需要為特定的客戶(或情況)提供物件組 |
問題 | 需要例項化一組物件 |
解決方案 | 協調物件組的建立。提供一種方式,將如何執行物件例項化的規則從使用這些物件的客戶物件中提取出來 |
參與者與協作者 | Abstract Factory為如何建立物件組的每個成員定義介面。一般每個組都有獨立地Concrete Factory進行建立 |
效果 | 這個模式將“使用那些物件”的規則與“如何使用這些物件”的邏輯分離開來 |
實現 | 定義一個抽象類來指定建立哪些物件。然後為每個組實現一個具體類。可以用表或檔案完成同樣的任務。 |
參考《設計模式解析》第二版