我知道 Prefer composition over inheritance 的迴應,並意識到組合優於繼承。你將如何設計沒有繼承的控制樹/層次結構?
但有些情況下,繼承確實有很好的作用。繼承層次結構的錯誤使用導致了與重用相關的所有問題。
採取以下控件的例子...
Button/Textbox/Combobox/ListBox/Grid etc.
它們通常被實現爲
public class Control
{
...
}
public abstract class TextBoxBase : control
{
....
}
public class TextBox : TextBoxBase
{
....
}
public abstract class ButtonBase: control
{
....
}
public class Button: ButtonBase
{
....
}
public class TextBox : TextBoxBase
{
....
}
public class NumericTextBox: TextBox
{
....
}
注意:無論是用戶界面和功能對於可重複使用。
我可能是錯的或部分正確的。你的想法只會幫助我提高對這個問題的理解。
您將如何設計控制模型/層次結構而不使用繼承,您認爲哪一個更好?
請考慮到易用性,以及此控件的IDE使用。
P.S:這個問題也受this question的啓發。
您應該再次閱讀該問題。 OP沒有說沒有繼承,他說沒有基礎類。接口可以從其他接口繼承。所以Button將實現實現IControl的IButton。 – jmucchiello 2008-12-12 18:09:28