请问什么叫无状态对象?

out_lier 发布于 2014/02/21 10:39
阅读 7K+
收藏 2
如题
加载中
0
崔钢
崔钢

对象一般都是有状态的。如果说某个对象无状态,那么这个对象应该存在于特殊的语言当中,比如java。因为java编程的基本单位是类,而类如果new过,那么一定会出现一个实例,这个实例就是对象。java中无状态的对象就是指某种没有任何属性的仅仅由方法组成的对象,我们一般会命名它为某某service,在使用spring的系统中是比较常见的。这种对象往往有特殊用途,不管合理与否,它是真实存在的。

0
halbert918
halbert918
就是无实例变量
0
MrSharp
MrSharp

引用来自“halbert918”的答案

就是无实例变量
或者有实例变量,不能改写,如private的,对外只暴露只读操作,无写操作。
0
凤城回忆
凤城回忆
属于线程安全的对象。
0
专业打酱油
专业打酱油

无状态的对象,是一个对象,并且这个对象没有状态!

通常情况,几乎所有对象都有状态,

比如一个人,按照不同的情况有多种状态,比如高矮、胖瘦、黑白、高富帅穷矮挫。

比如一个杯子,玻璃的还是塑料,圆的还是方的。

你可以想一下,生活中哪些对象是无状态的?

抽象到程序设计中,无状态的对象,我们往往仅仅考虑对象的一个切面,

比如一个User,有多个属性,Name,Age等等,只要你认为这些属性的变化对User的唯一认定没有影响,那这些属性,就不会影响User的状态,意思是说这个User的状态我不关心这些属性,那这些属性的变更不能成为影响User的状态的必要因素。

比如User一个Age达到18岁了,我认为这个User的状态变化了,是成年人了,那么这个User是有状态的,状态就是是否成年,活着你认为Age多少岁无关紧要,那么这个User就是没有状态的。

对象状态的变化一般是由你关心的某属性变化引起的,无状态的对象一般是不可变对象,不可变对象是线程安全的。


0
cpampa
cpampa
Java中的无状态对象,即一个对象,不包含任何field,也不包含对任何其他类中的field的引用。成员方法计算的临时状态仅存在线程栈上的局部变量中,并且之后能由正在执行的线程访问。是线程安全的。
返回顶部
顶部