設計之接口行爲的擴展

    接口行爲的擴展,經常面臨這樣的問題,之前已經定義好一個接口,且該接口已經在很多地方使用到,現在我們想讓新增新方法。

    如下圖1所示所示,已經定義了接口IVedioMedia,已經有RM和Mpeg實現了它。現在如果在IVedioMedia接口中新增resize()方法,那麼就要連同RM和Mpeg一同修改,這已經違反了open-close原則,即在添加新功能的同時,不修改原有的、已經存在的代碼。這時候我們應該定義新的interface接口——IResizable,之後新建RMAdapter來實現這個接口,同時讓RMAdapter繼承RM,這樣就在實現新功能的同時,不修改IVediaoMedia和RM,做到了不修改已經存在的代碼。

    由於項目的歷史原因,經常會遇到這種問題,所以在這裏記錄下。

 

                                 

                                                        圖1 

    建議讀者閱讀《軟件設計精要與模式》的第14章,閱讀原文。

Reference:

  1. 張逸著,軟件設計精要與模式,第14章
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章