Мне известны ответы на
Предпочитаю композицию наследованию
и я знаю о достоинствах композиции перед наследованием.
Но бывают случаи, когда наследование играет хорошую роль. Это неправильное использование иерархии наследования, которая вызывает все проблемы, связанные с повторным использованием.
Возьмите пример следующих элементов управления ...
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 .: Этот вопрос также вдохновлен этим вопросом .