2011-01-06 4 views
1

J'ai une classe de base et une classe dérivée en phase de conception. La classe de base restera une mais beaucoup de classes dérivées en hériteront. Il est donc très coûteux de changer les classes dérivées dans le futur et je cherche le meilleur design pour éviter cela.Stratégie d'héritage lors de la conception de la classe de base

En fait, la classe dérivée n'a besoin que de quelques méthodes à remplacer (si nécessaire), mais il est tentant de lui révéler plus de détails.

Ma question concerne la politique qui est extensible à l'avenir. Puis-je réduire les méthodes/propriétés héritées à la classe dérivée et en révéler davantage dans les versions suivantes si nécessaire sans modifier les classes dérivées? Ou est-ce que je devrais révéler quelque chose qui pourrait être utilisé par les classes dérivées dans le futur et les laisser choisir s'ils en ont besoin ou pas?

Merci

Répondre

1

Vous pouvez sans problème modifier d'autres méthodes et propriétés de privé à protéger ultérieurement. La seule règle est que les membres protégés existants ne peuvent plus jamais être rendus privés

2

Je réduirais définitivement le nombre de méthodes protégées pour le moment. Il est toujours difficile de prédire l'avenir, trop de choses changent pendant le développement/la conception d'une classe, donc la meilleure chose est de le garder simple et de faire le meilleur design pour ce que vous savez maintenant pas ce qui pourrait ou pourrait être nécessaire à certains temps dans le futur.

0

En plus de ce que les autres ont posté, vous voudrez considérer qui est le public cible pour votre classe de base. Font-ils partie d'une API ou d'un framework qui est destiné à être étendu par vos clients ou d'autres consommateurs externes, ou est-ce que cette abstraction est entièrement sous votre contrôle (c'est-à-dire que vous allez seulement implémenter des dérivations)? En fonction de la réponse, vous devrez peut-être réfléchir très sérieusement aux classes de base que vous exposez. Il peut être difficile de concevoir un schéma d'héritage souple et efficace.

+0

Pas d'API, c'est entièrement sous mon contrôle. Les classes dérivées implémentent également une interface qui est également implémentée par la classe de base bien sûr. – Xaqron

Questions connexes