论坛首页 Java版

DemeterJ, DJ, AP

浏览 1455 次
精华帖 (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]
   
最后更新时间: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。
   
0 请登录后投票
论坛首页 Java版

跳转论坛:
JavaEye推荐