在外掛程式系統中,每乙個外掛程式都有自己的一些配置資訊,比如說圖示資訊、介面顯示資訊等。如果以前做了乙個外掛程式,發現另外乙個外掛程式和它的功能差不多的時候該怎麼辦呢?可以用配置檔案將不同的地方描述出來,也可以在以前的基礎上做乙個派生類。到底是用配置還是用派生,這個問題就有趣了。
中國特色的軟體產品就是地區版本多,同樣一件事情每個地方規則都不一樣。比如說做了乙個功能,在北京用沒有問題,拿到上海去就不符合要求了。地區特性要求我們的軟體必須要響應變化。
出現變化後的第乙個反應就是oo了。有著各式各樣的設計模式來教我們怎樣利用oo的特性來應對變化。
比如說現在需要乙個計算個人所得稅的模組。
計算的思路都是一樣的,但由於地區經濟的差異,所以在有些資料上各個地方會略有不同。
按照oo的思想來考慮,我們可以做乙個計算的基類,利用模板方法將各地不同的地方做成虛函式。基類中處理具體計算的演算法,派生類中處理地區差異,比如說各地的稅收起徵額不同。在到具體地區實施時只需要選擇不同的派生類就可以了。並且也非常方便擴充套件。如下面的taxcalculator1。
同時也有另外一種思路,在taxcalculator2中沒有什麼虛函式,也不存在派生類,不過它執行的時候需要乙個配置檔案,在配置檔案中描述地區差異。
當然,這裡說的是一種非常簡單的情況,在實際的應用中比這個要複雜的多。
就上面分析的來看,似乎用派生和配置兩種方案都可以。如果是oo思想的「崇拜者」很可能覺得第一種方法更好,因為第二種方法不是物件導向的思路。
在專案中遇到這個問題時,是和外掛程式機制聯絡起來的。也就是說外掛程式之間從邏輯上講是「派生」的關係(乙個外掛程式為乙個dll檔案)。如果按照類派生的方式來處理,則需要將不同的派生類分別編譯成不同的dll發布出去;如果用配置檔案則只需要發布乙個dll檔案另外附加上不同的配置檔案。
從外掛程式發布的角度考慮,用配置檔案的代價要更小。所以在實際的專案中,採用第二種方式居多。並且在非外掛程式系統中用派生方式實現的模組也盡量考慮用配置檔案的方案。
其實在這裡我考慮的最主要的因素是「成本」,分為下面兩個部分。
用派生的方式實現,在維護期間需要維護的是**;用配置檔案的方式實現,在維護期間**不需要維護,只需要改變配置就可以滿足要求。我們認為維護**的成本比維護配置的成本要高。
用派生實現,需要發布給使用者多個dll檔案;用配置檔案實現,需要發布給使用者乙個dll檔案,多個配置檔案。我們認為發布dll的成本比發布配置檔案的成本要高。
結合上面的成本因素來考慮,用配置檔案的成本要低,所以選擇這種方式。
我們的產品是什麼?以前很直觀的認為程式設計師的產品就是**。
**和設計文件、計畫文件一樣都不是最終產品,它們都屬於文件的範疇。最終生成產品的不是我們程式設計師,而是編譯器。**是一種文件,編譯後生成的二進位制檔案才是產品。
在專案中,我們會考慮從設計文件到**需要的成本,但極少考慮從**到二進位制需要的成本。原因很簡單,因為從**到二進位制的過程太廉價了。通常我們不需要考慮編譯過程的成本因素。
由此來看,上面提到的「發布成本」是可以忽略不計的。
關於維護成本這一點,就是仁者見仁,智者見智了。
有的人就喜歡讀**:) 所以很難說維護**和維護配置檔案那乙個成本高了。不過有一點沒有爭議,那就是到了使用者那邊,二進位制檔案可是沒有辦法改的了。
有些喜歡刨根究底的人就會進一步鑽牛角尖,就像我一樣。
如果用動態語言又會是什麼樣的情況呢?
因為動態語言不需要編譯成二進位制檔案,所以它就是一種可以執行的文件了。可以將我們系統中的配置檔案當作動態語言的一種,不過它只能決定簡單的行為。因為配置檔案畢竟不支援「封裝」、「繼承」和「多型」。用真的動態語言的話,既可以得到配置檔案靈活的優勢,又可以得到程式語言強大的功能。
從這點來看,動態語言在這個場合還是非常有用的。
市場 管理 技術
企業分為三個部分 市場 管理 技術。市場是企業的命脈 管理維持著正常的運作 技術可以保留顧客的忠誠度。可以將乙個企業比作乙個人。市場是手,管理是腦,技術是心。市場是手,為了生存的需要,我們要有一雙勤勞的手,這樣慘能找到賴以生存的資源。管理是腦,管理者需要有遠大的目標和精細的統籌安排,乙個企業能否健康...
市場 管理 技術
企業分為三個部分 市場 管理 技術。市場是企業的命脈 管理維持著正常的運作 技術可以保留顧客的忠誠度。可以將乙個企業比作乙個人。市場是手,管理是腦,技術是心。市場是手,為了生存的需要,我們要有一雙勤勞的手,這樣慘能找到賴以生存的資源。管理是腦,管理者需要有遠大的目標和精細的統籌安排,乙個企業能否健康...
產品市場管理與產品規劃
產品市場管理與產品規劃 課程背景 企業產品經營如何才能真正做到市場導向?如何解決研發與市場脫節的問題?如何才能避免閉門造車式的產品開發?如何制定有效的市場規劃和產品規劃?如何建立清晰的產品路標 平台路標和技術路標?作為企業高層 營銷主管 產品經理或研發主管,您是否被這些問題所困擾?那麼,市場管理 m...