首页 新闻 会员 周边

访问器,OO ?

0
悬赏园豆:10 [已解决问题] 解决于 2008-06-24 01:24
<P>看了Allen Holub的《Why getter and setter methods are evil -- Make your code more maintainable by avoiding accessors》这篇文章,感觉就是对我的当头一棒,从前也近似崇拜地根着书上所说那样想:让字段成为private,然后用访问器将其公开,是为了更好的封装。确实,用了访问器会比直接公开字段好得多,但是,当访问器返回的是一个具体类型时,使用访问器还是不可取。</P> <P>但是在.net中,访问器的普遍使用是让我疑惑的主要原因,尤其是实体类,网上看到的许多关于分层架构的文章中的实体类几乎全都是用访问器公开了所有的属性,FCL中也有大量的属性的使用,既然如此,那肯定有使用它的道理,那“道理”是什么呢?也许这也是度的问题,那要如何把握这个度呢?</P> <P>还请指教!</P>
水言木的主页 水言木 | 小虾三级 | 园豆:586
提问于:2008-06-22 13:52
< >
分享
最佳答案
0
目前的开发中,有很多约束使你不能够完全的使用OO。例如,数据库的访问还无法做到完全的OO. 因此,在关于数据访问层,大多时候,我们会直接暴露实体类上的所有字段。这样设计更简单一些。 另一方面,什么是OO也是一个不很清楚的定义。简单的一个问题:设计模式中的访问者模式(Visitor)是不是破坏了OO的封装性呢? 因此,我们在设计时更多的应该思考,怎样让这个设计在满足需求和扩展性的基础上最简单。只要设计足够简单,并且能够满足可预期的所有需求。这个设计就很好了。不要太强求OO。
Colin Han | 老鸟四级 |园豆:3041 | 2008-06-23 13:28
其他回答(2)
0
Jared.Nie | 园豆:1940 (小虾三级) | 2008-06-22 21:26
0
没有看过你上文提到的文章,个人感觉使用geter,seter,即便是在geter,seter中什么都不做,也没有什么不好的。体现了对数据的封装,性能上也没有什么影响。
玉开 | 园豆:8822 (大侠五级) | 2008-06-23 09:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册