J'ai donc voulu hériter d'un sealed class
dans csharp et j'ai été brûlé. Il n'y a tout simplement aucun moyen de le desceller à moins d'avoir accès à la source.
Ensuite, cela m'a fait penser "pourquoi sealed
existe-t-il même?". Il ya 4 mois. Je n'ai pas pu le comprendre, malgré la lecture de beaucoup de choses à ce sujet, telles que:
- Souhaits de Jon Skeet "les classes ont été scellées par défaut dans .NET. "
- Vous préférez la composition à l'héritage?
- "Vous ne devez pas sceller toutes les classes (...)"
- Comment vous moquez-vous d'une classe scellée?
J'ai essayé de digérer tout cela depuis, mais c'est trop pour moi. Finalement, hier, je l'ai essayé à nouveau. Je les ai à nouveau analysés, et quelques autres:
- Pourquoi une classe devrait-elle être autre que "abstraite" ou "finale / scellée"?
- En plus de 15 ans de programmation, la première fois que j'ai entendu parler de SOLID , à partir d'une réponse à une question déjà liée et je n'ai évidemment pas tout lu il y a 4 mois
Enfin, après beaucoup de réflexion, j'ai décidé de modifier fortement la question d'origine en fonction du nouveau titre.
La vieille question était trop large et subjective. Il s'agissait essentiellement de demander:
- Dans l'ancien titre: une bonne raison d'utiliser scellé
- Dans le corps: comment modifier correctement une classe scellée? Oubliez l'héritage? Utiliser la composition?
Mais maintenant, en comprenant (ce que je n'ai pas fait hier) que tout sealed
fait empêche l'héritage , et nous pouvons et devons en effet utiliser la composition plutôt que l'héritage , j'ai réalisé que j'avais besoin d' exemples pratiques .
Je suppose que ma question ici est (et en fait a toujours été) exactement ce que M. Mindor m'a suggéré dans une conversation : comment la conception pour l'héritage peut-elle entraîner des coûts supplémentaires?