关于Swing组件扩展的经验法则是什么?

mre*_*mre 3 java swing jcomponent extend

将类专用于特定的Swing组件时,extend对该特定组件更好,还是在内部构造并提供引用?

public class Foo extends JComponent{

}
Run Code Online (Sandbox Code Playgroud)

要么

public class Foo{
    public JComponent getComponent(){
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑

这就是我所说的奉献精神

public class Foo{
    private static Foo INSTANCE;

    public static Foo getInstance(){
        if(INSTANCE == null){
            INSTANCE = new Foo();
        }
    }

    public void createAndShowComponent(){
        //do stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

在里面createAndShowComponent(),我创建了一个JComponent包含所有组件及其各自的侦听器,而不暴露我刚创建的组件的内部.

mev*_*ett 7

+1超过扩展的组合.它使API更加清晰,因为您只公开了对新组件重要的方法

  • 我认为这不是一个强硬的快速规则.如果你要在很多地方使用泛型组件,那么肯定扩展任何JComponent,但是如果它是单个应用程序的独立类,我认为最多的是它,而不是将应用程序的一部分与使用组合分离并创建一个干净的API (4认同)