# 多態
### 總結
多態在面向對象程序中的應用相當廣泛,只要有繼承的地方,或多或少都會用到多態。然而多態比起繼承來,更容易被不明不白地使用,一切看起來都那么順其自然。在客戶程序員這邊,一般是只要多態是可行方案的一種,到最后大部分都會采用多態的方案來解決問題。
然而多態正如它名字中所暗示的,它有非常大的潛在可能引入不屬于對象初衷的邏輯,巨大的靈活性也導致客戶程序員在面對問題的時候不太愿意采用其他相對更優的方案,比如IOP。在決定是否采用多態時,我們要有一個清晰的角色概念,做好角色細分,不要角色混亂。該是攔截器的,就給他制定一個攔截器接口,由另一個對象(邏輯上的另一個對象,當然也可以是自己)去實現接口里的方法集。不要讓一個對象在邏輯上既是攔截器又是業務模塊。這樣才方便未來的維護。另外也要注意被覆重方法的作用,如果只是單純為了提供父類所需要的中間數據的,一律都用IOP,這是比直接采用多態更優的方案。
IOP能夠帶來的好處當然不止文中寫到的這些,它在其他場合也有非常好的應用,它最主要的好處就在于分離了定義和實現,并且能夠帶來更高的靈活性,靈活到既可以對語言過高的自由度有一個限制,也可以靈活到允許同一接口的不同實現能夠合理地組合。在架構設計方面是個非常重要的思想。
### 參考資料
- [跳出面向對象思想(二) 多態](http://casatwy.com/tiao-chu-mian-xiang-dui-xiang-si-xiang-er-duo-tai.html)
- 介紹
- 程序員基礎知識
- 字符編碼
- 技術名詞
- 語義化版本
- 命名規范
- 書寫文檔
- 開源協議
- 目錄結構
- 正則表達式
- 平凡之路
- 數據結構與算法
- 堆和棧
- 浮點數類型
- XML和JSON
- 算法學習之路
- 排序算法
- 代碼架構
- 設計模式
- 常用的Javascript設計模式
- 面向對象編程
- 繼承
- 多態
- 封裝
- 面向接口編程
- 代碼評審
- 六種量化你代碼的方式
- 程序員必備的代碼審查(Code Review)清單
- 服務器部署
- AWS簡介
- 網絡知識
- HTTPS, SPDY和 HTTP/2性能的簡單對比
- HTTP狀態碼
- 懂點設計
- 佳作賞析
- 無縫平鋪
- Sketch學習
- 設計與實現的平衡
- 寫點東西
- 使用gitbook
- 合格的PM
- 一個好的產品經理
- 產品經理的技能
- 團隊合作
- 關于招聘
- 培訓新人
- 領導能力
- 獲取知識
- MOOC
- Podcasts
- 英語學習
- 設計學習
- 前端學習
- iOS學習
- 游戲開發
- 關注健康
- 過勞檢測
- 關于睡眠
- 提升效率
- 學會閱讀
- 學會提問
- 善用搜索
- 學會寫作
- 時間管理
- 知識管理
- 文件管理
- 密碼管理
- 制作視頻
- 制作PPT
- 論音樂對效率的影響
- 程序員效率指南
- SOHO
- 創業資源
- Hacker
- 保護隱私
- 關于工作
- 找工作前需要思考的問題
- 原則與技巧
- 關于簡歷
- 其他方面
- 硬件相關
- 常用軟件
- Windows
- 硬件配置
- 系統安裝
- 常用軟件
- Mac
- 通用設置
- 權限問題
- alias設置
- 常用軟件
- 開發環境
- 快捷鍵設置
- 常用終端命令
- dotfiles
- Android
- 常用軟件
- 如何登錄美國區GooglePlay
- 開發工具
- git
- EditorConfig
- node
- shadowsocks
- ST3--Windows篇
- ST3--Mac篇
- gulp
- 字體的選擇
- Emacs
- WebStorm
- tmux
- Sketch
- Sketch中文學習資料
- Trello
- 使用Trello管理項目的經驗
- git進階
- 15分鐘學會使用Git和遠程代碼庫
- GitHub秘籍
- JetBrains
- IDE設置
- 附錄
- 計算機科學與技術
- 網站
- 書籍
- 工具