锁定老帖子 主题:面向对象的荒诞之处
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2014-08-14
leobluewing 写道 kezhon 写道 leobluewing 写道 那一开始在设计些什么东西,30个字段经常只操作一两个,你们的架构师可以拉出去枪毙了。
这有什么不可理解的?比如一个User会有非常多属性,但常用的可能只有name,email,password。你是不是要说可以把其它属性拆分成别的类啊?问题是,我抽象类是针对现实中的实体来抽象,还是要面向业务需要来抽象? 那按照你的意思,现实中没的实体你怎么办?根本就没有一定要怎样设计的说法。领域模型的设计思路因人而异或者业务不同而不同,有人愿意大而全的领域模型,有人愿意多而精巧的领域模型。 现在的领域设计都被一些莫名其妙的思路搞的乱七八糟,上来就是一个实体对应一张表。 面向对象不是实体怎么设计,不是实体的属性应该怎么划分,不是去研究究竟是is-a还是has-a。 面向对象的核心是屏蔽,是隐藏实现。所以才有封装,继承,多态这些特性的出现。 但是再怎么设计业不应该一个实体大部分操作只操作一两个字段,你就好比你这个User对象大部分操作只要看name,email,password? ok,那你所有有关人员的信息的人事报表看来是没了,人员的履历信息应该也没做了,根据人员生日,性别,注册日期等等的事务提醒看来也是没做了,人员入职离职等状态是基本不用的。 所以,基本不可能出现30个字段经常只操作一两个的实体,如果出现,那架构师就应该拉出去枪毙。 |
|
返回顶楼 | |
发表时间:2014-08-14
那么当我new一个对象时,内存中会分配所有字段的空间
这个看着就不对把,基本类型会给默认值 function(int param1,int parm2,int param3) 不建立model,这里还不修改死啊,大型的系统SOA,你接口要是这样定义,不同系统调用升级还不被搞死啊 |
|
返回顶楼 | |
发表时间:2014-08-14
modal?
model? |
|
返回顶楼 | |
发表时间:2014-08-15
这根本就不是问题。 面向对象从来就没有宣称过自己是最高性能的。 事实上面向对象总是会带来一些性能上的开销。 这就是一个权衡。 以微小的性能代价,换来整个系统的可维护性,可扩展性,可重用等面向对象的好处。
这点细微的性能开销无需纠结。 |
|
返回顶楼 | |
发表时间:2014-08-15
楼主在做事的同时针知道思考是件好事儿,敢问楼主工作多久了》。。
另外leobluewing说得很实际... |
|
返回顶楼 | |
发表时间:2014-08-15
ThinkingQuest 写道 这根本就不是问题。 面向对象从来就没有宣称过自己是最高性能的。 事实上面向对象总是会带来一些性能上的开销。 这就是一个权衡。 以微小的性能代价,换来整个系统的可维护性,可扩展性,可重用等面向对象的好处。
这点细微的性能开销无需纠结。 支持! 一件事情有两方面!面向对象的利大于弊 所以值得!!!! 而且: 内存真心便宜 ![]() ![]() ![]() ![]() |
|
返回顶楼 | |
发表时间:2014-08-15
面向对象的核心是抽象。
而你只是谈论封装。 |
|
返回顶楼 | |
发表时间:2014-08-17
其实只要想着你用的任何一个lib(比如spring)时时刻刻会在内存中创建出无数个对象,然后销毁无数个对象。。。你上层那么一丢丢多出来的小对象,空对象,就是一丝毛而已。。。
你的user对象又不会长时间驻留在内存,简单点一个request结束后user就没用了,jvm的gc完全不会把这种事情当一回事 |
|
返回顶楼 | |
发表时间:2014-08-17
面向对象不是用来解决性能问题的,是解决软件抽象的问题,换言之本质上是解决代码可维护性的问题。虽然30个属性浪费性能,但没有增加维护上的负担。
性能问题也不能归咎到面向对象上,比如这个对象为什么会有30个属性,是不是它的“抽象数据类型(adt,参考《代码大全》)”没有建好?可不可以拆分一下? |
|
返回顶楼 | |
发表时间:2014-08-18
最后修改:2014-08-18
分析性能应从整体考虑找到瓶颈,如果创建实例确实是最大瓶颈,我觉的可以放弃!
你想法应用场景应该是内存受限时吧,比如以前j2me手机开发,就几M的内存,那时创建一个对象都要考虑。 |
|
返回顶楼 | |