欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

DemeterJ, DJ, AP

程序员文章站 2022-06-11 13:54:54
...
根据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, 有显式的顺序概念

AspectJ

aspect Logging{
  LogFile l;
  pointcut traced():
   call(void *.update()) ||
   call(void *.repaint());
  before():traced(){
   l.log(“Entering:”+
   thisJoinPoint);}
}


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() {…}});
   }
}