Java和C#细微差别导致迥异的解决思路
当你从一种编程语言转到另外一种语言,你有没有发觉你自己考虑问题开始发生变化?我用Java开发已经有八年了,我才是转到C#。C#语言借用了许多Java的优点,但是它也有自己的一些特色。许多C#中最有有价值的也被Java所采用。比如说最先在C#出现的attributes、generics、auto-boxing – which,这些都被添加在JDK 1.5 版本中。
尽管这些优点特征在不同的语言中来回采用,但是每一种语言仍然有它自己的独特之处。每种语言的一些方面将从来不会被其它的语言所采用,因为要引入它们的话,你就要改变语言就基本的概念,这会使得你先前的工作失效。
因此,我使用C#的时候,我会很小心的。在我使用Java之前,我还有七年的C++经验,并且我还记得当时转变的情景。岁让Java和C++非常相似,但是相同点会带来假象。表面上语言的一个小小不同,会在我思考,设计,测试应用程序时带来很大的不同。
Java给我带来了一些新的事物,如无用存储单元收集,类型反射,和非常有重大意义的异常处理。开始的时候,我是些写Java程序就像一个C++程序员。花了我一些时间来适应新的语句变化。通过理Java语言中新的,最基本的概念,我才能最终能让这门语言发挥它的最大威力。
因此,我学习C#的时候非常谨慎。尽管C#和Java非常相似。我不是说Java处理事情的方式不好才转变到C#上的。我同时了解其它开发者目前开发任务,来洞察采用这种语言处理事物最为有效的方式。
现在我在C#开发方面有一些经验了,但是我仍旧用Java做一些兼职的工作。因此我能很清楚的看到两种语言在细微的差别如何影响到我的设计理念。
[b]C#事件和代理[/b]
这是C#最大的过人之处。我几乎无处不用观察者模式(Observer Pattern)。Observer Pattern允许你自动生成一个对象的事件,并且自动监听这个对象。在Java里,这个工作需要Java开发者做很多的工作。你需要创建一个接口,能够捕捉到你所有的事件,手动实现这些方法,在监听器中添加或者删除。
甚至实现事件监听器的方法也是很丑陋的。你需要创建事件接口的实现。匿名的内部类能帮上一点忙,但是他们会将代码零散。
java.util.Observable,简单尝试将这种设计方式封装成一个类。在JJK1.0就已经做了,但是这件事情没有多大的用处,仅仅是理论例子。
简言之,能够让C#的Observer Pattern模式应用在Java中是无法阻挡的。大多数Java开发者,没有去考虑是否存在这么一种工具,能够想C#那样自动创建事件和监听,这些在Java中都是很难测试和维护的。
页:
[1]
