>面向对象程序设计中的对象是对现实世界中对象的抽象表述,现实世界中的
>对象是不断演化的,即其状态是不断变化的,而对象处于不同的状态,会有
>不同的行为。我们封装的对象,而不是对象的一个状态。所以,在oo design的时候要考虑对象的多种可能状态及相应行为。
>对象是不断演化的,即其状态是不断变化的,而对象处于不同的状态,会有
>不同的行为。我们封装的对象,而不是对象的一个状态。所以,在oo design的时候要考虑对象的多种可能状态及相应行为。
in real life for more complicated situation, can you define other classes to perform the "open" and "close" action?
比如在TCP通讯模型中,在整个通讯
过程中,TCP结点可以有十几个状态,而且在不同的状态有不同的行为。例如CLOSED,LISTEN,SYN_RCVD等等。
CLOSED closedNode = GetTCPNode();
closedNode.passiveOpen();
现在,closedNode演化为OPEN对象。
chenyuan_tongji老兄说的“在oo design的时候要考虑对象的多种可能状态及相应行为”其实与我说的那个解决方案是一样的道理,的确是一个解决方案,但不是一个好的解决方案。
我们想要的就是如何实现对象的平滑演化。
诚如weimenren所言,目前这种问题的处理一般都是用委托模式处理。
有没有更好的办法?自然一点的!
Temporal property 跟这个无关!
而我希望的是对象在演化的过程中可以改变其接口,正如一个蛋对象不应该具有鸡对象的接口一样。
听说LISP语言支持程序对象的演化,对象在运行时可以修改自身代码,不知各位用没用过LISP,给介绍一下,不胜感激。本人目前想从OO的思路进行AI的研究,例如智能体(Agent),一个Agent在网络世界里学习、进化,当然其技能会不断提高,拥有的知识可以不断增加,其状态也会不断演化,如何设计一种Agent的结构(使用Java or C++)是一个基本的问题,希望各位不吝赐教!