![]() |
Após reler o trabalho de Open Modules, fiquei com uma dúvida relacionada a linguagem de DRs. Open Modules restringe os pointcuts que podem ser referenciados por advices. Esse recurso, ao que me parece, não é suportado pela linguagem de DRs, certo? Ou os aspectos implementam obrigatoriamente uma (talvez mais que uma) DR? Ou seja, ficaria a critério dos desenvolvedores programarem seguindo uma interface ou não, certo? | ![]() |
Add your comments to the Discussion |
Resposta de Rodrigo as questões de Márcio: > Concordas??? > o aspecto iria sim ser obrigado a implementar a DR concordo. mas tenho uma duvida quanto a todo aspecto implementar uma DR? No caso de open modules, aspectos podem interceptar apenas o que está público nas interfaces. Isso resolve o problema de evolução do código base quebrar os aspectos. Mas nao define a responsabilidade dos aspectos (ponto positivo da linguagem de DR). Se os aspectos puderem referenciar pointcuts nao descritos nas DRs, o problema de fragile poderia continuar existindo. O resto eu concordo. ![]() |
RodrigoBonifacio | 08 May 2008 - 17:55 |
Resposta de Márcio: Acho que se há uma DR, há um contrato a ser implementado por ambos, classe e aspecto. Assim sendo, o aspecto iria sim ser obrigado a implementar a DR, afinal acho que não faz sentido existir uma DR somente pra uma classe ou somente para um aspecto. Eu também acredito que limitar os pointcuts não esteja na linguagem de DRs. Até onde eu entendo, ela é uma espécie de checker que verifica basicamente duas coisas: (i) a classe expõe os pointcuts declarados na DR? (Ou seja, ela provê os métodos insert(..))??? (ii) o aspecto tem algum advice para os pointcuts declarados na DR? (Ou seja, ele introduz algum código para alterar o comportamento de insert(..))? Em suma, acho que a linguagem não restringe, mas sim verifica se os pointcuts existentes estão sendo expostos (pela classe) e tratados (pelo aspecto). Concordas??? |
RodrigoBonifacio | 08 May 2008 - 17:54 |
Resposta de Paulo: Eu ja conversei com alberto sobre isso, mas atualmente a linguagem de drs nao esconde joinpoints. e aspectos podem nao implementar drs. mas mesmo que tivessem que implementar, isto nao daria o mesmo efeito de open modules, certo? drs indicariam que joinpoints tem que ser visiveis nas classes, outra coisa e dizer quais nao podem ser visiveis. |
RodrigoBonifacio | 08 May 2008 - 17:53 |