2006-05-04
可以假定对象的属性全部由对象本身的方法来访问
这是一个非常重要, 但也是一般很容易被接受的前提; 只要遵守下面几点就可以满足要求:
对象没有public的实例属性
protected和package的实例属性也不要在同一个包的其他类中直接读写
static的类方法不要直接访问对象实例属性
这在一般的java应用程序中是很容易做到的.
在处理事务时需要考虑其他代码对对象实例属性的访问, 但是在java目前的平台上, 要跟踪对象属性的访问似乎只能通过Java Virtual Machine Profiler Interface (JVMPI), 而这显得有些蹩脚, 不仅会霸占这个排他的接口而让需要它的java程序无法运行, 本身的执行效率也会打个折扣. AspectJ在这方面也仅仅是巧言声明: 它"被容许"只处理所能触及到的java代码, 它编译过程所触及不到的java代码对对象属性的访问可以不用截获.
而有了现在这个前提, 就可以不必须跟踪对象实例属性的访问, 而只是跟踪对象实例方法的调用, 假定对对象实例方法的调用都会访问其实例属性, 读或者写; 这会包含一些并不会访问实例属性的方法, 可能还有一些返回值虽然从实例属性计算得来, 但不会因对象属性被更新而变化的方法, 不过这些方法应该从比例上只是一小部分, 而且概念上认为他们访问了对象实例属性也可以成立.
发表评论
最近加入圈子
最新评论
-
实例观察网络模型与关系模 ...
Class Screwing()不就是一种服务吗?[Evans03]跟关系模型有 ...
-- by sslaowan -
我也谈谈JAVA并发程序设计 ...
读写锁,这个概念几十年前就有了,*nix下应用的很广泛。JAVA如果能支持那是更 ...
-- by ken1984 -
我也谈谈JAVA并发程序设计 ...
可惜无法下载源码看看写得怎样。。 不然,我参与进来。。。。。。
-- by whyandwhat -
我也谈谈JAVA并发程序设计 ...
使用 j.u.c 的工程在并发控制的代码编写上,明显比传统的 synchroni ...
-- by totobacoo -
我也谈谈JAVA并发程序设计 ...
不知道LZ的Hosting Based Interfacing和移动代理的差异。 ...
-- by cuijunrong







评论排行榜