V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
fihserman123
V2EX  ›  Java

如果说简单的设计是一种美,那么 Java 的内部类设计岂不是真丑陋?

  •  
  •   fihserman123 · Feb 3, 2020 · 5485 views
    This topic created in 2274 days ago, the information mentioned may be changed or developed.
    16 replies    2020-02-04 14:01:15 +08:00
    ech0x
        1
    ech0x  
       Feb 3, 2020 via iPhone
    前排吃瓜。
    micean
        2
    micean  
       Feb 3, 2020 via Android
    哪里丑了,总得给个理由吧
    lostberryzz
        3
    lostberryzz  
       Feb 3, 2020
    如果说复杂的设计是一种美,那么 Java 的内部类设计岂不是巧夺天工?
    KentY
        4
    KentY  
       Feb 3, 2020   ❤️ 1
    抛出新看法观点很正常, 起码说几个论据, 和怎么论证的吧?
    Buges
        5
    Buges  
       Feb 3, 2020 via Android   ❤️ 1
    C++更丑,“兼顾”了易用性,扩展性,性能,和历史遗留问题。简直就是缝合怪。
    zhx1991
        6
    zhx1991  
       Feb 3, 2020   ❤️ 1
    如果说 java 的设计是一种美, 那么 java 的设计岂不是很美?
    imn1
        7
    imn1  
       Feb 3, 2020   ❤️ 2
    非白即黑……
    为何中国的教育一直不教逻辑?
    easylee
        8
    easylee  
       Feb 3, 2020
    @imn1 #7 暗地里阶级划分、教育问题任重而道远啊。

    另外,看了不少 Java 代码,以及几个大版本的架构设计,我觉得 Java 的设计很强啊,没发现吗?
    easylee
        9
    easylee  
       Feb 3, 2020
    @easylee #8 接上:

    简单是一种美,对的,但是所谓的简单也是根据内部的高度抽象来的呀。

    Java 某种程度上以及某个年代上来说写法简单优雅,可以理解为美吧,但是你又吐槽人家内部丑陋......你去写一个更好的吧。
    wmhx
        10
    wmhx  
       Feb 3, 2020
    java 在设计模式和严谨性上说第一, 没意见吧.
    Harry
        11
    Harry  
       Feb 3, 2020   ❤️ 1
    @fihserman123

    且不说美丑。
    Java 的内部类设计有它自己的用处(而且挺好用还挺简洁的)。这个在日常的后端开发中(服务器)不容易看到,如果你接触一些类似 android 的开发,或者看下 android 开源的代码,你就会发现这么大的系统,把所有的类暴露出来是一种迷惑和污染。反而使用内部类,一个可以是逻辑内聚,达到封装的目的,另一个也不会暴露给其他 public interface 导致其他人需要看到这个接口的实现而并不需要用到。

    Effective Java 是一本非常不错的书,可以读一下。里边有 non static inner class 和 static inner class 的说明和讲解。
    GM
        12
    GM  
       Feb 3, 2020
    开局一个论点,网友全靠猜?
    janxin
        13
    janxin  
       Feb 4, 2020 via Android
    简单确实美,但不代表复杂一定不美…
    salamanderMH
        14
    salamanderMH  
       Feb 4, 2020
    Java 类设计挺好的
    fihserman123
        15
    fihserman123  
    OP
       Feb 4, 2020
    @Harry
    内部类有:inner class、nested class、又配合着各种不同的权限修饰( public、protected、default、private ),当然还有匿名内部类、局部内部类。相比较而言,内部接口逻辑就简单很多,必须是 public 且 static 的( nested class 和内部接口逻辑是差不多的)。
    说 Java 设计模式好的,的确,因为这容易让我们看懂代码,知道一个”get+类名"的组合就知道这是一个工厂方法了。可是,这另一方面,代码的堆叠太常见了。
    如果说优美,我自认为内部接口比内部类优美很多。
    fihserman123
        16
    fihserman123  
    OP
       Feb 4, 2020
    内部类的存在,我认为在于描述一种类之间的逻辑关系,或者说是具有 throwable 的特性。但是在 heap 中却不分内部类、外部类,本质实现上没有内外区别,Java 想提供一种安全的类间逻辑关系,但是这个逻辑却是显得过于复杂化了。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5657 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 122ms · UTC 08:29 · PVG 16:29 · LAX 01:29 · JFK 04:29
    ♥ Do have faith in what you're doing.