Méthodes protégées dans AbstractTopiaDao
Hello, Ça me gène un peu d'avoir les méthodes protégées dans l'AbstractTopiaDao. Ok pour qu'elles ne soient pas dans le contrat TopiaDao mais de là à tout mettre en protected, c'est un peu ennuyeux de ne pas laisser la possibilité de les utiliser quand même. Autre question, pourquoi certains forXXX sont publiques et même sur le contrat et d'autre protected ? Exemple forProperties est publique alors que forHql ne l'est pas , y'a rien qui justifie cette différence. Je vous parle de tout ça dans un cas on je ne peux pas récupérer un dao métier et donc... pas même en castant en AbstractTopiaDao je ne peux rien faire... Any idea, avis, else ? -- Tony Chemit -------------------- tél: +33 (0) 2 40 50 29 28 http://www.codelutin.com email: chemit@codelutin.com twitter: https://twitter.com/tchemit
Le 18/12/2013 20:23, Tony Chemit a écrit :
Autre question, pourquoi certains forXXX sont publiques et même sur le contrat et d'autre protected ?
Exemple forProperties est publique alors que forHql ne l'est pas , y'a rien qui justifie cette différence.
Les méthodes protected visent à t'aider à implémenter ton DAO (donc écrire du code dépendant de l'infra dans ton DAO) alors que celles publiques te servent à appeler le DAO à l'extérieur (code indépendant de l'infra). forHql prend du HQL en paramètre, c'est du spécifique infra donc ça doit être dans le DAO, donc c'est protected. forProperties c'est neutre, donc c'est dans l'API et c'est public. De mon point de vue, la différence est parfaitement justifiée.
Je vous parle de tout ça dans un cas on je ne peux pas récupérer un dao métier et donc... pas même en castant en AbstractTopiaDao je ne peux rien faire...
Any idea, avis, else ?
Ça me gène un peu d'avoir les méthodes protégées dans l'AbstractTopiaDao.
Ok pour qu'elles ne soient pas dans le contrat TopiaDao mais de là à tout mettre en protected, c'est un peu ennuyeux de ne pas laisser la
Dans l'idéal, tu peux réexposer la méthode protected dont tu as besoin sur le DAO dont tu as besoin. Sauf que là, tu peux pas, vu que comme tu dis, tu peux pas récupérer le DAO métier. Pour moi, la manière propRE de faire à terme serait d'introduire le EchobaseDAO dont on a parlé hier, sur lequel tu exposes les méthodes protected en public dont tu as besoin. Dans ton code actuel, tu casterais en EchobaseDao plutôt qu'en AbstractTopiaDao. On peut faire l'évol vendredi. possibilité de les utiliser quand même.
Cette solution me pose problème : en effet, on pourrait dire que les méthodes ne sont pas exposées dans TopiaDao donc tout va bien sauf qu'en réel, on utilise une sous-classe (dans un service on utilise BoatTopiaDao, pas TopiaDao), donc on va se retrouver avec ces méthodes exposées en public et je préférerais pas. Avec la solution au dessus, tu pourrais caster en EchobaseDao et donc avoir les méthodes dont tu as besoin. À moins que je loupe un truc ? -- Brendan Le Ny, Code Lutin bleny@codelutin.com (+33) 02 40 50 29 28
participants (2)
-
Brendan Le Ny -
Tony Chemit