At 03:39 PM 3/22/2002 +0100, you wrote: >Le 22 Mar 2002 Sebastien Cesbron a �crit : > > > [...] > > l'ensemble de mes classes service. Ma question est la suivante : > > existe t'il un moyen de masquer le constructeur des classes service en > > dehors de cette couche pour obliger les utilisateurs � passer par la > > classe GestionnaireService? Le moyen simple auquel j'avais pens� �tait > > [...] > >Au niveau du constructeur, si tu as une classe "service" de base de >laquelle h�rite tous les autres, tu peux d�clarer le constructeur de >cette classe en protected. Ainsi tu permets l'acc�s depuis le >paquage, tu permets l'h�ritage des services, mais tu n'emp�ches pas >stricto-sensu la construction des classes services en dehors du >gestionnaire de service. > >Si tu veux vraiment l'empecher, tu ne peux pas le faire depuis le >constructeur. Il faut que tu introduises une m�thode d'enregistrement >d'un service d�j� construit dans le gestionnaire de service, style >instGestionnaireService.enregistreService(instService), ou bien que >tu cr�es dans la classe Service de base une m�thode final de niveau >paquage, donc inutilisable depuis les autres paquages, toujours pour >enregistrer le service, style final >Service.inscritMoi(instGestionnaireService). > >Je connais pas tout ton contexte, mais � premi�re vue la m�thode >d'enregistrement d'un service par le gestionnaire de service est la >meilleure. oui je suis assez d'accord avec Herve, adopter un design du genre architecture du JCE (environnement crypto) avec des fournisseurs (Providers), des factories aupres desquelles on enregistre des implementations( un MD5 ou un SHA1)...
c'est assez souple, elegant et tres evolutif... Jerome
