2009-09-09 6 views
0

Tenir compte de la démonstration simplifiée suivante:Comment concevoir une interface pour le confinement Muliple

classe X contiennent classe Y. Classe Y a la méthode publique, Y.doYStuff().

Comment conçoit-on l'interface X qui utilise la méthode de Y telle quelle?

Si l'on ajoute une méthode publique à X qui transmet simplement le requst à Y, il en résulte une interface de X pléthorique non souhaitable et la dépendance de X code pour le code Y. Cette approche devient pire à confinement multiple.

Si l'on utilise un accès indirect, tel que X.Y.doYStuff(), la conception est beaucoup plus propre, mais cela entraîne la rupture de l'encapsulation X. Donc, y a-t-il une conception propre et correcte qui permet d'utiliser des méthodes d'une classe interne hors classe?

Répondre

1

Il semble que le design que vous utilisez est un peu en arrière. De votre description vous ne voulez pas particulièrement avoir des méthodes Y directes dans votre interface X, alors pourquoi ne pas avoir une interface secondaire Z par exemple. De cette façon, les interfaces seront plus spécifiques et vous pourrez implémenter les deux interfaces sur les objets dont vous avez besoin.

Il en résulte deux interfaces plus petites, mais avec une plus grande flexibilité.

Vous pouvez également créer une classe abstraite Z à l'aide de l'interface X. Ensuite, vous avez juste besoin d'hériter de Y à partir de Z et pouvez faire une construction base() ou super() pour obtenir la fonctionnalité dont vous avez besoin.

Les deux devraient fonctionner pour vous.

Questions connexes