Je pose cette question pas tant pour faire avancer le débat que pour voir s'il n'y a pas quelque chose qui m'échappe...
Le découplage entre le proxy et l'objet proxifié. Tu peux vouloir proxifier des objets d'une bibliothèque dont tu n'a pas la charge du code source et tu voudrais alors que l'évolution de cette bibliothèque ne te coûte le moins possible (ajout, suppression, changement des méthodes de cet objet).
De l'autre coté d'un point de vu utilisateur le fait que l'objet soit proxifié devrait être transparent (par définition un proxy doit avoir un contrat équivalent, sinon c'est un adapteur). Donc tu ne devrais pas toucher au typage pour ça.
Ce sont 2 grosses contraintes mais elles donnent une grande flexibilité et ce n'est pas des cas théoriques. Spring est très largement basé sur des proxies par exemple (il ne le fait pas comme ça, mais s'ils pouvaient ils le ferraient).
Dans les autres façons de faire que je vois il y a :
utiliser de l'AOP, tu patch le code ou le code généré
utiliser MOP de groovy (mais le __call() de php peut faire la même chose) intercepter les appels vers ton objet
[^] # Re: Performance
Posté par barmic . En réponse au journal Moi, expert C++, j'abandonne le C++. Évalué à 2.
Le découplage entre le proxy et l'objet proxifié. Tu peux vouloir proxifier des objets d'une bibliothèque dont tu n'a pas la charge du code source et tu voudrais alors que l'évolution de cette bibliothèque ne te coûte le moins possible (ajout, suppression, changement des méthodes de cet objet).
De l'autre coté d'un point de vu utilisateur le fait que l'objet soit proxifié devrait être transparent (par définition un proxy doit avoir un contrat équivalent, sinon c'est un adapteur). Donc tu ne devrais pas toucher au typage pour ça.
Ce sont 2 grosses contraintes mais elles donnent une grande flexibilité et ce n'est pas des cas théoriques. Spring est très largement basé sur des proxies par exemple (il ne le fait pas comme ça, mais s'ils pouvaient ils le ferraient).
Dans les autres façons de faire que je vois il y a :
__call()de php peut faire la même chose) intercepter les appels vers ton objet