`
smithfox
  • 浏览: 53976 次
  • 性别: Icon_minigender_1
  • 来自: hf
社区版块
存档分类
最新评论

幂等性 个人理解及应用

阅读更多

[原文见我个人blog http://www.smithfox.com/?e=16 在javaeye发布一次]

 

[说明: 本文为http://www.smithfox.com原创, 转载请注明原文, 谢谢]

 

网络上的绝大部分解释类似于:

"幂等性是指重复使用同样的参数调用同一方法时总能获得同样的结果。比如对同一资源的GET请求访问结果都是一样的。"

我认为网络上的这种解释太窄,不能用来解释程序开发对幂等性的本质要求.

 

详见: http://www.smithfox.com/?e=16 

0
0
分享到:
评论
2 楼 smithfox 2011-01-21  
@feng_tai_jun,
“幂等性是指重复使用同样的参数调用同一方法时总能获得同样的结果。比如对同一资源的GET请求访问结果都是一样的。” 这绝对是错误的解释!!
幂等性压根和返回结果没有关系, 幂等性强调的是 外部对系统内部的影响. 而不是外部怎么看系统.就上面这种解释, System.getCPULoad(), 这两次调用返回能一样吗? 但因为是只读接口, 对系统内部状态没有影响, 所以这个函数还是幂等性的.

至于你提到的 条件幂等性和 非条件幂等性, 我还是不怎么明白, 呵呵.

我认为幂等性是有作用范围的, 我们可以将整个对象声明成幂等性(也就是说承诺所有对外公布的接口都是幂等性性的), 也可以只将对象的部分接口(这种情况一般是只想让外部影响对象的部分属性)声明成幂等性.
1 楼 feng_tai_jun 2011-01-19  
你好。你对幂等性讲地很好。我加一些个人理解,不对之处,望不多多指出交流:

“幂等性是指重复使用同样的参数调用同一方法时总能获得同样的结果。比如对同一资源的GET请求访问结果都是一样的。”——
1、按这个理解,对同一资源的GET请问访问结果是一样的,但是这里的“结果是一样的” 是有前提条件:同一个对象在没有使用非幂等性方法改变对象时,才有对一个方法说是幂等性。因此,幂等性应该区别出:条件幂等性,及非条件幂等性 才行。(条件幂等性:是指 对象中方法处理的对象只有符合一定条件的基础上才成立)
因此,就能区分开:条件幂等性就一定不是具有安全性的。
2、照上面的理解,幂等性 幂等的是对象的值。
可这个理解应该是狭义的。
大家都知道,是方法,就一定同时涉及到了 值、及值的类型。
那么,说到幂等性,一定要明确汲及到的类型。

相关推荐

Global site tag (gtag.js) - Google Analytics