Bonjour,
Je cherche à résoudre le problème d'architecture suivant. D'un côté une librairie générique qui contient à la fois une hiérarchie et des structures de classe (fonctions, types d'objets encapsulés, ...). De l'autre côté, l'implémentation de cette librairie sur un problème concret.
Librairie générique
Implémentation
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 IBase<IResource>[Initialize(), Run()] -> IBaseType1<IResourceType1>, IBaseType1<IResourceType2> -> ... -> IBaseType1.A.IV<IResourceType1.A.IV>
Mon problème vient de l'organisation de la hiérarchie : je veux pouvoir implémenter un niveau hiérarchique de la structure de base, pour pouvoir par exemple faire une fonction Initialize() commune (classe AbstractType1), mais aussi avoir les fonctions spécifiques d'un sous-niveau (classe ConcreteType1). Pour ça, j'ai l'impression qu'on ne peut travailler qu'avec des interfaces dans la librairie générique.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 AbstractType1:IBaseType1<ResourceType1> ConcreteType1:AbstractType1, IBaseType1.A.IV<ResourceType1.A.IV>
L'architecture que j'ai implémenté ci-dessous me pose deux problèmes:
1.
Lorsque je déclare
, on ne passe pas dans ConcreteType1.Initialize(), même si cette fonction est déclarée en 'new' par rapport à AbstractType1.Initialize()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 IBase<ResourceType1> instance = new ConcreteType1(); instance.Initialize()
2.
Avec les interfaces, je ne peux renseigner aucun code dans la librairie générique alors qu'il y a du code générique (commun à toutes les branches ou spécifiques à certaines) que j'aimerais décrire, par exemple la fonction Run() du dernier élément d'une branche.
Merci d'avance pour vos lumières !
Partager