为了账号安全,请及时绑定邮箱和手机立即绑定

对象作为参数传递的疑问?

对象作为参数传递的疑问?

largeQ 2018-08-01 14:11:22
对象作为参数传递给方法,方法内部把对象的部分属性修改了,在面向接口编程的情况下,方法调用结束后,怎么能知道哪些属性被修改了?在开发和后期维护阅读代码时都是令人很头疼的。仅对于对象作为参数传递,有没有更好的方式或者想法呢。
查看完整描述

1 回答

?
紫衣仙女

TA贡献1839条经验 获得超15个赞

一个对象,交于一个方法(不论是谁的方法)来处理的时候,肯定涉及到被读取、甚至是修改。如果是调用者不应该修改,却做了修改的操作,这本身就是代码写得有问题,必须要检查出来,并且给予修正。如果条件不允许检查出代码并修改,同时又要保证执行之后,对象保持原样,那么,你只能deepcopy一份对象,将deepcopy出来的对象交于这个方法处理,以此来保证原有的对象。还有一种情况,不知道你是不是这样的需求,就是,希望编码这个方法的人,操作这个对象的时候,本身就操作不了,如果是这样,你只能使用富血对象,也就是,几乎所有对这个对象的操作,都封装在这个对象的内部,然后这个对象的属性使用public string Name{get;private set;}来实现。这样,如果你把这个对象,传给了其它对象的方法,他们是无法操作Name这个属性的,但是,这样开疑增加了项目的复杂度,但是,在实现没有办法的情况下,也只能通过这种方式来实现。


查看完整回答
反对 回复 2018-08-25
  • 1 回答
  • 0 关注
  • 556 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信