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

对象作为参数传递给方法,方法内部把对象的部分属性修改了,在面向接口编程的情况下,方法调用结束后,怎么能知道哪些属性被修改了?

在开发和后期维护阅读代码时都是令人很头疼的。仅对于对象作为参数传递,有没有更好的方式或者想法呢。


largeQ
浏览 559回答 1
1回答

紫衣仙女

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