Je suis au courant des réponses à Prefer composition over inheritance et suis au courant des mérites de la composition sur l'héritage.Comment concevez-vous l'arbre/hiérarchie de contrôle sans héritage?
Mais il y a des cas où l'héritage a un bon rôle à jouer. C'est l'utilisation incorrecte de la hiérarchie d'héritage qui provoque tous les problèmes liés à la réutilisation.
Prenons l'exemple des contrôles suivants ...
Button/Textbox/Combobox/ListBox/Grid etc.
Généralement, ils sont mis en œuvre comme
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
{
....
}
REMARQUE: Les deux l'interface utilisateur et le functionlity est réutilisable.
Je peux me tromper ou partiellement corriger. Vos pensées m'aideraient seulement à améliorer ma compréhension de ce sujet.
Comment allez-vous concevoir le modèle/la hiérarchie de contrôle sans utiliser l'héritage, et lequel pensez-vous être le meilleur?
Veuillez tenir compte de la facilité d'utilisation, de l'utilisation de l'IDE pour ce contrôle. Cette question est également inspirée par this question. Lorsque toutes les tâches sont dans les mêmes rôles, l'héritage est meilleur.
Vous devriez relire cette question. Le PO n'a pas dit d'héritage, Il a dit pas de classes de base. Les interfaces peuvent hériter d'autres interfaces. Donc, Button implémenterait IButton qui implémente IControl. – jmucchiello