很高兴,banq来回复,并提出看法。
下面继续说说我的认识和观点。
首先,状态是任何对象都有的,不存在无状态的对象,这是因为,对象都是有生命周期的,既然有生命周期,则在这个生命周期中,必然有某个时刻的状态。
只不过,区别是,一般人认为,从头到尾,贯穿了整个生命周期,而值不改变的,就不是状态。如果只处于生命周期中,某个时间段的,那么就是有状态,其实,如果统一起来看,无非是这个时间段的长度不同,本质上都是有状态的。
举例:
李白的name,可以这么说:
李白从生下来取了名字叫李白后,到他死,这个时间段,都叫李白。
希拉里.克林顿的name,可以这么说:
从希拉里嫁给克林顿后,她的名字,叫做:希拉里.克林顿。在此之前,她跟他父亲姓,结婚之后,跟她老公姓。
年龄,肯定是随时间不断变化的,有状态的。
性别,看似无状态,其实,可以这么描述:变性人,在变性之前,是男,在变性之后,是女。
职称,某某人,在某某职称考试通过之前,是什么职称,在考试通过之后,是什么职称。
婚姻状况,某某人在20岁结婚之前,是未婚,在20岁结婚之后,是已婚,在45岁离婚之后,是离异。
所以,我们可以看到,任何一个属性,其实都可以像我这样改写为一个属性名,加上一个时间段的限定。
所以,其实完整的声明应该是:
private String name [时间段]
private String sex [时间段]
如此这般,才是完整的。
其实从哲学上说,因为对象有生命周期,所以它有一个时间段,有一个时间段,必然有一个在这个时间段的状态。
只不过,如果一般这个时间段的状态,对人来说,没用,那么就把这个看成是一个无状态的,而实际上,它还是有状态的。
例如那个结婚主题中的司机,可以是无状态的对象,因为他对于结婚主题来说,无关紧要。但是,这个司机其实肯定是有状态的对象。
归纳一下,属性值其实是对象在某一个时间段的状态表示。
既,属性值,本质上是一个状态表示。