浏览 1455 次
|
锁定老贴子 主题:DemeterJ, DJ, AP
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2006-09-11
根据BirdGu的指导。我搜索了Demeter。发现和以前看到的Adaptive Programming有密切联系。
先解释一下名词: AP -- Adaptive Programming Demeter J -- Demeter Java DJ -- Dynamic Adaptive Programming in Java 这些和AOP同样有紧密的联系。 Demeter是一个原则。law。 大意就是只能调用member, parameter的第一级方法, 不能a.getA().getB()这样的连锁调用。 当然,它的正式定义没有我写的这么直白。 Demeter Java呢,就是帮助程序员避免自己写很多Wrapper,又能够遵守Demeter Law的一种自动工具。 Adaptive Programming就是Incremental Concern Programming。算是AOP, AOSD的一个特例。 Dynamic Adaptive Programming in Java 就是建立在Demeter Java基础上的 Adpative Programming。 和AOP (AspectJ etc)的关系是互补的。 区别在于,DJ 定义了一条 Object Graph Traversal 路径,然后用一个 Visitor 去截获路径上的 Object. AOP : 定义并截获 Pointcuts 没有显式的顺序概念 AP : 定义并截获 Object Graph Traversal Path, 有显式的顺序概念 [code:1] AspectJ aspect Logging{ LogFile l; pointcut traced(): call(void *.update()) || call(void *.repaint()); before():traced(){ l.log(“Entering:”+ thisJoinPoint);} } [/code:1] [code:1] Java+DJ class Source{ HashSet collect(ClassGraph cg) {return (HashSet) cg.traverse(this, “from Source to Target”, new Visitor(){ … ; public void before (Target h) { … } public void start() {…}}); } } [/code:1] 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2006-07-13
我看到这个Class Graph, Object Graph Traversal 觉得很不错。
但用的是Visitor Pattern, 如果用Iterator Pattern更方便一些。两个Graph 就可以同时Traversal了 see iterator vs visitor http://forum.javaeye.com/viewtopic.php?p=128712 不过,iterator的实现难度远远高于visitor。 |
|
| 返回顶楼 | |



