浏览 2568 次
锁定老帖子 主题:有一个问题请教一下高手。
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2006-11-05
举个例子: class Test{ private String one = "one"; private Test other; public Test(){} public void setOther(Test other){ this.other = other; } public void print(){ System.out.println(other.one); } } 当用以下程序段执行的时候 Test test1 = new Test(); Test test2 = new Test(); test1.setOther(test2); test1.print(); 结果是同一类型的不同对象,当在互相访问的时候,破坏了这种封装性。 我的疑问是这样对吗?请高手从面向对象的角度解释一下。 如果test1,test2,是domain对象的话,以这种方式访问完全可以破坏其对象内部数据的不变性。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-11-05
这个还不算是“破坏了这种封装性”。
其一,TEST1和TEST2是自家兄弟, 其二,相关的操作,仍是在TEST类内完成的。 当然了,这不算是好的实践方法。 |
|
返回顶楼 | |
发表时间:2006-11-05
rtdb 写道 这个还不算是“破坏了这种封装性”。
其一,TEST1和TEST2是自家兄弟, 其二,相关的操作,仍是在TEST类内完成的。 当然了,这不算是好的实践方法。 但自家兄弟也有各自的隐私啊。就像你会告诉你兄弟你偷偷的拿了他的信用卡去买东西吗? |
|
返回顶楼 | |
发表时间:2006-11-05
rtdb 写道 这个还不算是“破坏了这种封装性”。
当然了,这不算是好的实践方法。 这个倒不一定,装饰模式,树及链表的结点不都是这种情况吗? |
|
返回顶楼 | |
发表时间:2006-11-05
类封装性 vs 类实例封装性
类实例封装性被破坏了。 类封装性大致保证。 封装界限达到类定义级别,没有达到实例级别。 --------------------- 另一个角度。 C++ 有 friend class 的概念,目的就是为了突破类封装性。 一个类天生就是自己的friend class。 |
|
返回顶楼 | |
发表时间:2006-11-05
gamex 写道 rtdb 写道 这个还不算是“破坏了这种封装性”。
其一,TEST1和TEST2是自家兄弟, 其二,相关的操作,仍是在TEST类内完成的。 当然了,这不算是好的实践方法。 但自家兄弟也有各自的隐私啊。就像你会告诉你兄弟你偷偷的拿了他的信用卡去买东西吗? 那若是必需要兄弟合作才能完成的事,总不能在语言级不支持吧。 最终还是程序员的事。基于面向过程的思想的JAVA程序又不是没见过。 |
|
返回顶楼 | |
发表时间:2006-11-05
rtdb 写道 gamex 写道 rtdb 写道 这个还不算是“破坏了这种封装性”。
其一,TEST1和TEST2是自家兄弟, 其二,相关的操作,仍是在TEST类内完成的。 当然了,这不算是好的实践方法。 但自家兄弟也有各自的隐私啊。就像你会告诉你兄弟你偷偷的拿了他的信用卡去买东西吗? 那若是必需要兄弟合作才能完成的事,总不能在语言级不支持吧。 最终还是程序员的事。基于面向过程的思想的JAVA程序又不是没见过。 首先合作是建立在你兄弟本身特点之上的(也就是个人能力之上的)。 对象内部信息就像你以生具来的特点。你兄弟不能改变你的个性和特点。 再举个例子如果是像这样的可以随时改变他的属性的话,当你从数据库当中load出这样的一个对象出来。 我就可以通过这种方法来篡改你的数据,结果将导致你说load出来的数据是条胀数据。 |
|
返回顶楼 | |