面向對象的設計原則(2):OCP

太出名了,不再多談。主要有兩點
 (1) Open for extension
 (2) Closed for modification
 Robert.C.Martin舉了一個Shape的例子來說明問題。關鍵的思想是,如果我們預測到了變化,就可以設計一個抽象來隔離它。但是無論模塊是如何得"封閉",都會存在一些無法對之封閉得變化。這需要設計人員對於他設計得模塊應該對那種變化封閉作出選擇,他必須猜測出最有可能發生變化的種類。然後構造抽象來隔離。這種預測能力需要經驗的積累!! 並且通常情況下都會猜測錯誤,怎麼辦,Martin給我們指出了一條道路:
 (1)只受一次愚弄
 我們願意被第一顆子彈擊中,然後我們會確保自己不再被同一支槍發射的任何子彈擊中
 (2) 刺激變化:
 第一顆子彈來的越早、越快對我們越有利:首先編寫測試,使用很短的迭代週期,儘早、經常的把軟件展示給客戶

 OCP是面向對象設計的核心所在,遵循這個原則可以帶來巨大的好處,但是肆意的抽象同樣不是一個好注意,拒絕不成熟的抽象和抽象本身一樣重要!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章