記錄一個設計的問題

需求以下,現有一個類A以及子類B,C,Dide

abstract class A{

   abstract void fn();

}

class B:A{
   override void fn(){}
}

class C:A{
   override void fn(){}
}
class D:A{
   override void fn(){}
}

 

顯然,B,C,D須要各自重寫相應的 fn() 來完成本身的功能。可是B,C,D因爲功能類似,其fn()實現幾乎相同。這個公共的函數有三種寫法:函數

1. 在 A 裏添加一個 protected 成員,而後在 B,C,D 均可直接調用。spa

2. 改寫 A 的 abstract 爲 virtual,而後在子類經過 base.fn() 調用。code

3. 新建一個類,而且寫成靜態函數供B,C,D調用。blog

相關文章
相關標籤/搜索