Dans un projet au travail que nous avons une certaine classe de type valeur dans notre modèle de domaine qui comprend un très grand nombre d'attributs ...Vous cherchez des informations sur une utilisation du motif adaptateur
public class BigValueType {
private Foo foo;
private Bar bar;
private Baz baz;
//...
}
Nous avons Nous avons réalisé que nous aimerions "concentrer" ceci en un certain nombre de classes différentes, un peu plus spécialisées, qui ne possèdent qu'un sous-ensemble des attributs de cette classe. Je pense que nous aimerions avoir quelque chose comme différentes "vues" de ces données. Cependant, ce modèle de domaine est destiné à être plutôt général, et non spécifique à ce projet. Des extensions spécifiques au projet lui seront ajoutées lors de futurs projets, mais le modèle de domaine commun sera séparé de ces extensions. Si nous définissons simplement un groupe de classes maintenant, il est probable que d'autres projets utilisant le modèle de domaine devront écrire leurs propres versions légèrement différentes plus tard. (Nous ne pouvons pas facilement prédire quelles vues de ces données seront utiles.)
Je pense que ce que nous devrions faire est d'écrire des adaptateurs spécifiques au projet pour cette grande classe qui présente les différentes vues des données. De cette façon, les futurs utilisateurs du domaine n'ont rien à toucher dans le modèle de domaine "commun" pour définir de nouvelles vues de cette information.
public class AdapterA {
private BigValueType wrapped;
//...
public ViewA(BigValueType wrapped) {
//...
}
public Foo getFoo() {
return wrapped.getFoo();
}
//...
}
Cela fait plus de sens pour moi que l'héritage normal parce que notre classe de niveau supérieur/l'interface aurait presque rien dedans.
Des commentaires sur cette approche?