讀《寫給大家看的面向物件程式設計書》
阿新 • • 發佈:2018-12-25
一切軟體系統都是遺留系統。新開發的軟體系統以後也要成為遺留系統,所以操持軟體的可維護性非常重要。
要產生可維護性的軟體,除了良好的編碼規範、完備的測試和文件,還要有良好的面向物件設計。
面象物件設計的精華就是介面或抽象類。
設計可重用的框架和元件的時候,這種介面的設計尤為重要。要注意區分介面和實現之間的差別。
設計型別系統的時候,可以採取以下幾步:
1.首先和使用者交談,都到一份關於軟體要完成的工作的具體流程描述。這份報告一個要具備完整性和純粹性,應該是使用者最需要實現的功能,而一些非功能性的需求,可能要靠分析人員來挖掘。
2.找出這個報告中所有的名詞。然後逐個討論,看其是否能作為一個類。注意有些名詞可能是類的一個屬性。
3.用CRC(類名-職責-協作)卡來管理這些名詞。
4.找出所以的動詞或動詞短語,同樣的辦法把這些動詞劃分到不同的類中去。
PS:以上方法不可能一次就得到一個完美的設計,像開發過程一樣,設計也是一個迭代的過程。設計介面的時候要遵循“最小介面原則”,根據實際使用類的使用者來選擇介面。根據開發的進行,不斷設計和調整介面。
再尋求需求的時候可以使用“用例圖”,描述型別系統的結構的時候使用“類圖”。這種圖能非常直觀,易懂。
任何複雜的系統都可以通過分層設計來解決。任何穩定的複雜系統,其各個層或子模組也是非常簡單和穩定的。
一些專家常說“多用組合,少用繼承”,這個問題不能太絕對,繼承也有其好處。介面繼承是實現程式碼重用的重要方法。這句話或許可以改成“多用組合和介面繼承,少用實現繼承”。
採用物件的方式來思考系統的設計。
設計模式不能過度使用,簡單就是美。複雜系統都是由簡單的子系統組成的。