当前位置:  技术问答>java相关

OO能否支持对象的演化?

    来源: 互联网  发布时间:2015-07-30

    本文导语:  面向对象程序设计中的对象是对现实世界中对象的抽象表述,现实世界中的对象是不断 演化的,即其状态是不断变化的,而对象处于不同的状态,会有不同的行为。 举一个简单的例子,现在有两种对象OpenedBox和ClosedB...

面向对象程序设计中的对象是对现实世界中对象的抽象表述,现实世界中的对象是不断
演化的,即其状态是不断变化的,而对象处于不同的状态,会有不同的行为。
举一个简单的例子,现在有两种对象OpenedBox和ClosedBox,OpenedBox具有close,put,get等行为,而ClosedBox只有open行为。现在我得到一个ClosedBox对象。
ClosedBox aClosedBox = GetaClosedBox();
aClosedBox.open();
现在,我的对象aClosedBox已经成为一个OpenedBox,但是它支持的却还是ClosedBox接口。还有一个问题是对象通过自己的操作open能不能将自己变为(演变为)另一个对象。
一种解决方案,也是常用的就是不分ClosedBox和OpenedBox,而是设立Box 类,具有所有上述操作,并在Box对象内部保持状态,比如bClosed,bOpen。但在对象结构复杂的时候,这个方案会使得Box类很复杂,而且感觉上也很别扭。

不知有没有别的好的解决方案,望大侠不吝赐教,Thx!

|
的確,temporal property中是沒有關於兩個對象的創建與銷毀。

而其實真正比較好的方法是使用接口,我們知道擴展和復用一個類的功能常用的是繼承,而需要動態的繼承的話,使用委托模式比較好。

一個對象需要在不同的時間“成為不同的衍生類”那麼這個對象根本不應該是一個衍生類。而一個對象可以在不同的時間委托給不同的對象。

使用委托可以很容易的在運行時刻對行為進行組合

|
你的这个问题,接口好像可以帮忙。或者你既然要这个类能变为另一个类,从这句话可看出,写两个类,必要时创建另一个类的对象不就行了。或许我没遇到你的问题,所以不能体味你的想法。

我个人觉得在你很好的应用OOS、OOD和OOP后,你的问题应该不是问题,一个好的解决方案一般会使你的程序代码易写,而且综合运用这3者好的话你的软件才具有一个好软件的条件之一。谨代表个人观点,仅供参考!

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • JSP能否访问Excel?JDBC吗?
  • IBM 346服务器上能否安装 liunx AS 4(up1),
  • USB设备,这样的想法能否实现
  • MySQL里Create Index 能否创建主键 Primary Key
  • 用java能否开发图形报表程序
  • 请问JBulider 4的序列号谁知到?能否提供给小弟?谢谢
  • java 对树的操作,TreeSet,能否插入相同的数据,如果相同,如何解决
  • 提问,关于能否在Canvas上面写文本
  • 能否介绍几本Java的好书
  • Apache 1.3.20和Tomcat 4能否结合起来?
  • jad 能否带子目录反编译?
  • java能否动态开辟string数组?
  • 各位大虾,能否告知JAVA的核心思想
  • 大家能否JBUILDER的使用技巧?
  • Kylix能否在红旗linux下用?
  • applet能否直接连数据库?
  • win2000和sco unix能否装在一个硬盘上?
  • 不知到在JAVA中能否实现下列功能:
  • 请问我的主版能否用LINUX?
  • 在Windows操作系统下能否实现X-Client?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3