发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 大数据 扩展性 并发编程 事件驱动 分布式 SOA
1 2 下一页 Go 2

java的new真的给我们带来了麻烦吗?

              
2008-04-08 21:28
赞助商链接

很多程序员多在抱怨java的new浪费了太多的内存,应该大量的使用static。但依据我观察banq老师的文章来看,banq老师似乎对这些看的不太重。我不知道是不是因为banq老师了解OO思想的真谛。
而在我看来我觉得Thinking in java 的第一章的对象导论给了我很大的启发。书中提到:汇编语言是对底层机器的轻微抽象,C语言是在汇编语言的基础上再次的对机器低层的抽象,而OOP是对低层的完全抽象;对事物的抽象程度决定了代码了优劣(书中原话不太记得了,据我的理解是这样的)
正因为OOP能够使程序员享受最大的快乐!
而java是OO现在的最佳解决方法,那么我们又何必只挑它的刺呢?
再而有了java程序员才有时间享受java(咖啡).

以上只是一个初学者的一点愚见中的遇见而以,如有出错望请大家指出。
如有理论性错误,望大家不要只顾笑顺便提出!。

2
2008-04-09 09:54

>抱怨java的new浪费了太多的内存,应该大量的使用static
前半句在某些情况下正确,后半句绝对错误。

说这话的是完全不懂对象,完全没有OO基础知识,但是这些人还在从事Java/.NET等OO软件开发,相当于外行人冒充内行,可见当前中国软件业水平多么低下。

为什么说这些程序员完全不懂OO呢?
因为他们只知道对象两个表面含义,却不懂对象背后的含义,对象重要特征是什么?对象重要的特征就是有生命的,有scope的,有生命周期的,这其实是一个很朴素的哲学思想,没有永垂不朽的东西,任何物体都是有生命的。

既然,对象有生命,那就当然有生有死,在java中,对象什么时候死已经无需我们操心,因为有垃圾回收机制,我们程序员只要决定对象什么时候生就可以,也就是对象什么时候创建,以何种方式创建。

对象可以new方式创建,也可以使用创建模式创建,方式很多,Ioc模式的诞生,特别是自动配对auto wiring的Ioc诞生,让对象的创建也无需我们来编码了,这更大大解决程序员的软件开发生产力,这也就是Jdon On Rails为什么快速的原因之一。

回到对象的生命周期上来,使用静态实际就是变态的延长对象的生命周期,虽然也解放了程序员,无需程序员照顾对象创建,但是这是一种错误的解放,是一种虽然简单,但是方向完全错误,可能导致更大性能陷阱的解决方式,这个我已经在单例是邪恶等帖子中反复表述,因为我们现在的软件是一个多线程环境,如果你使用静态,不但导致非OO系统,到处是长命百岁的对象,系统难于维护;更重要不小心就导致多线程变成单线程系统,也就是单用户系统,某个时刻只能一个用户操作这个系统。换句话说:就是系统缓慢,人操作一多就死机。

[该贴被banq于2008-04-09 09:56修改过]

2008-04-09 13:22

对象重要的特征就是有生命的,有scope的,有生命周期的,这其实是一个很朴素的哲学思想,没有永垂不朽的东西,任何物体都是有生命的。


顶这句话!

2008-04-09 14:11

果然一针见血!讲得太好了,这是在书本上学不到了东西呐.
该珍惜jdon!

2008-04-10 18:51

非常同意banq的观点,这里说说我个人的另外一点看法,大量使用static是对static的误用,我们学习编程语言的时候往往只注重了语法和语义,而忽视了语言的另一个重要要素“语用”,也就是该在什么情况下使用。楼主说的这种情况就是对static的语用不了解而造成的。

Static的语法就不用说了,语义就是不用创建类而可以直接使用,是类所共有的东西,所有的类的实例都共用的。但语用是什么呢?该在什么情况下使用呢?还是先了解一下语义和语用吧,语义是反映结构内部的关系,而语用则反映了结构成分同外部世界具体事物之间的联系,是结构外的关系。也就是说关系到对象内部状态的属性或操作就不能是static的,而与外部对象的操作不会涉及到对象内部状态的就可以是static的,所以有一些工具类方法就是static的,java本身也有这样的例子,如Integer.parseInt,System.out.print等。

2Go 1 2 下一页

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系管理员 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com