如果你只会Java,那所有东西看起来都是类

在软件开发领域,有一句话经常被拿来用:

如果你手头只有锤子,那所有东西看起来都像钉子

这句话有各种各样的类似的说法,但最初的来源是工具定律,也叫做马斯洛的锤子

我是今天在阅《Head First 设计模式》这本时想到这个故事的。(一本奇书,不确定我是否该推荐你们读这本书。)

让我印象深刻的东西是,对于任何设计上的问题,Java里给出的解决方法都是创建一个新类。我很吃惊,这种语言里基本上没有第二种用于抽象代码的方法。我已经用惯了带有lambdas语法的语言,所以,举个例子,为了封装一个“开灯”的动作,你需要创建一个LightOnCommand类来实现Command接口,这种做法感觉就是浪费脑力、字符,精神。我讨厌这严重受限的代码表达能力。

分享这篇文章:
[英文原文:If the only tool you have is Java, everything looks like a class ]

24 Responses to 如果你只会Java,那所有东西看起来都是类

  1. destinytobe_____ says:

    那只能说明你对于面向对象的理解非常肤浅~~~~~~

  2. haitao says:

    所以java的开发效率就低下了。。。。。。
    (运行效率姑且不论)

  3. Leo says:

    讨论的主题是语言的优劣?

  4. Easily says:

    那就多学几种语言嘛,不同的语言有不同的使用场合,再使用一些粘合剂把这些东西粘合起来就OK了

  5. johnny says:

    还大杂烩呢.

  6. ShengFQ says:

    是啊,没必要这么说哪种语言好,哪种不好,不好的话怎么会被沿用至今呢?
    我们需要的是求同存异的眼光,如果你发现某个语言有缺陷,请深入发现他,研究他,改正他,否则java也不会做为开源的了,其目的就是为了全世界的人都可以优化他,当然了,如果你是日本人,你会说英语是无聊的语言吗?你只会说日语是最完美的,其实是你不懂英语罢了。

    • 依云 says:

      有个法则叫“劣币驱逐良币”。

      关于Java的开源,我真想fxxk Oracle,你丫的把Sun的jre和jdk从Linux官方源里赶出去是不是决定放弃推广Java了?

  7. Ella says:

    我觉得说的更像是思维定势而不是哪种语言的优劣,各行各业,或同行里面使用不同的方法/方式的人,看到一些事物时,首先会以自己最熟悉的思维来观察和理解。

  8. Footprint says:

    呵呵,没有那么夸张啊,虽然所有东西都可以写成一个类,但也无需那么详细,个人觉得JAVA的表达能力还是很强的!!!

  9. evan says:

    Yes,对这一点,我也很不喜欢。我认为是那些写Sample的人做的过头了。也许他们只是在展示用OO也是可以做的,也许他们也知道这样很麻烦。

  10. vincent says:

    当你面对无数的if else的时候
    你就晓得java有多好了

  11. i-robot says:

    幸运的是,JVM上有很多可选择的语言,比如Clojure

  12. tao says:

    java 是 抽象的一种角度。对事物进行抽象还有其他角度。

  13. win says:

    出发点不同吧!如果习惯了everything is object后,应该会觉得设计模式是很经典的,起码我是这么觉得的。

  14. codi says:

    《Head First 设计模式》这是一本好书,经典!

  15. zengmh 对这篇文章的反应是赞一个
  16. mmany2023 says:

    我觉得这要看你考虑问题的规模了,如果你只是有一个模块需要添加一个“开灯”的功能那完全可以不去考虑什么设计模式,直接写一个private的LightOnCommand方法就够了,为啥要为了一个只用一次的东西写接口写实现?
    但或者你是考虑到了将来的可扩展性、模块化等需求,那还是应该采用这些经典的设计模式,虽然一开始觉得很麻烦,但是越往后面添加的功能多了也就会觉得越省事了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

壹加壹等于