1. 程式人生 > >研磨設計模式 之 迭代器模式(Iterator)1——跟著cc學設計系列

研磨設計模式 之 迭代器模式(Iterator)1——跟著cc學設計系列

14.1  場景問題

14.1.1  工資表資料的整合

       考慮這樣一個實際應用:整合工資表資料。

       這個專案的背景是這樣的,專案的客戶方收購了一家小公司,這家小公司有自己的工資系統,現在需要整合到客戶方已有的工資系統上。

       客戶方已有的工資系統,在內部是採用的List來記錄工資列表;而新收購的這家公司的工資系統,在內部是採用的陣列來記錄工資列表;但是幸運的是,兩個系統用來描述工資的資料模型是差不多的。

       要整合這兩個工資系統的工資資料,當然最簡單的方式是考慮直接把新收購的這家公司的工資系統,也改成內部使用List來記錄工資列表,但是經過仔細檢視原始碼,發現有很多的程式碼跟這個陣列相關,還有很多是比較重要的邏輯處理,比如計算工資等,因此只好作罷。

現在除了要把兩個工資系統整合起來外,老闆還希望能夠通過決策輔助系統來統一檢視工資資料,他不想看到兩份不同的工資表。那麼應該如何實現呢?

14.1.2  有何問題

       本來就算內部描述形式不一樣,只要不需要整合在一起,兩個系統單獨輸出自己的工資表,是沒有什麼問題的。但是,老闆還希望能夠以一個統一的方式來檢視所有的工資資料,也就是說從外部看起來,兩個系統輸出的工資表應該是一樣的。

經過分析,要滿足老闆的要求,而且要讓兩邊的系統改動都儘可能的小的話,問題的核心就在於如何能夠以一種統一的方式來提供工資資料給決策輔助系統,換句說來說就是:如何能夠以一個統一的方式來訪問內部實現不同的聚合物件。

---------------------------------------------------------------------------