第六周 設計原則
代碼復制
消除代碼復制的兩個基本手段,就是使用方法和父類(將兩個子類的相同屬性和行為都放在父類里)。
耦合與聚合
對于類的設計來說,有兩個核心術語:耦合和聚合。
耦合這個詞指的是類和類之間的聯系。之前的章節中提到過,程序設計的目標是一系列通過定義明確的接口通信來協同工作的類。
耦合度反映了這些類聯系的緊密度。我們努力要獲得低的耦合度,
或者叫作松耦合(loose coupling)。
聚合與程序中一個單獨的單元所承擔的任務的數量和種類相對應有關,它是針對類或方法這樣大小的程序單元而言的理想情況下,
一個代碼單元應該負責一個聚合的任務(也就是說,一個任務可以被看作是一個邏輯單元)。一個方法應該實現一個邏輯操作,而一個類應該代表一定類型的實體。聚合理論背后的要點是重用:
如果一個方法或類是只負責一件定義明確的事情,那么就很有可能在 另外不同的上下文環境中使用。
遵循這個理論的一個額外的好處是,當程序某部分的代碼需要 改變時,在某個代碼單元中很可能會找到所有需要改變的相關代碼段。
增加可擴展性
用封裝來降低耦合
- Room類和Game類都有大量的代碼和出口相關
- 尤其是Game類中大量使用了Room類的成員變量
- 類和類之間的關系稱作耦合
- 耦合越低越好, 保持距離是形成良好代碼的關鍵
可擴展性的意思就是
代碼的某些部分不需要經過修改就能適應將來可能的變化。 (減少硬編碼)
以框架+數據來提高可擴展性
- 命令的解析是否可以脫離if-else
- 定義一個Handler來處理命令
- 用Hash表來保存命令和Handler之間的關系
最后, 我在Github上貼出了前后兩個版本的castle_game的實現代碼示例:
Github實現代碼.png
https://github.com/menglanyingfei/MOOC_Wengkai_Java/tree/master/code/castle_game
可以經過仔細對比, 第二個版本develop的代碼完全符合這些設計原則!
個人博客:(一個一直在堅持認真學習Java的大二學生)
博客地址
現在時間:
2017/07/16
23:05:00