程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 策略模式 ——解決繼承帶來的苦惱

策略模式 ——解決繼承帶來的苦惱

編輯:C#入門知識

在最近的維護版本的開發中,經常碰到的一個問題:接手的項目中使用了OO的觀念,可是大量使用繼承,造成對子類的行為約束的過緊,子類很難擴展,此時如果修改父類的話,又容易誤傷子類(因為一些子類的行為修改,而另一些又不需要修改)。被百般折磨後發現了策率模式,故在此記錄下。

為了表示結構,使用了下面的類圖,很簡單。DuckA,DuckB,DuckC均繼承自Duck,並在Duck中實現了Swim()Quack(),所以現在的所有的鴨子都會游泳,都會叫,因為鴨子長的可以不一樣,所以在子類中分別實現了Display()。

此時,我們可能想到第二個方案是,將變化剝離出來,即將Quack()作成接口,會叫的鴨子實現該接口。這樣看似很合適,因為解決了DuckD不會叫的問題,而且更加符合OO的設計。但是這並不能解決代碼重復的問題,即DuckA,DuckB中Quack()的實現是一樣的。繼承了接口,但是依然無法達到代碼的復用。

此時我們該怎麼辦呢?

 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved