Java中的类设计-更优雅的解决方案?

Java中的类设计-更优雅的解决方案?,java,oop,class,Java,Oop,Class,我似乎在用菊花链将这些类链接起来(它们只相互作用,而不是一般的),它们变得太具体了 我可以从一个只实现部分功能的基类继承ClickGrid,但是我只有一次机会抽象一些功能(没有多重继承)。我可以为每个新功能重复继承,但如何知道哪些功能更基本 我不是一个完美主义者,这个解决方案很有效,但当我编写代码时,我在想“这感觉很笨拙。一定有更聪明的方法来做这件事。”虽然我有很多这样的设计问题。这是一个很好的问题,但它可能会被转移到那些没有明确答案的问题上。这是一个要求代码审查和其他更“敏感”的东西的好地方。

我似乎在用菊花链将这些类链接起来(它们只相互作用,而不是一般的),它们变得太具体了

我可以从一个只实现部分功能的基类继承ClickGrid,但是我只有一次机会抽象一些功能(没有多重继承)。我可以为每个新功能重复继承,但如何知道哪些功能更基本


我不是一个完美主义者,这个解决方案很有效,但当我编写代码时,我在想“这感觉很笨拙。一定有更聪明的方法来做这件事。”虽然我有很多这样的设计问题。

这是一个很好的问题,但它可能会被转移到那些没有明确答案的问题上。这是一个要求代码审查和其他更“敏感”的东西的好地方。不幸的是,大多数swing应用程序“感觉笨拙”,我还没有找到任何好的方法来解决这个问题。我发现,在我开发的所有swing应用程序中,通常会出现以下两种情况之一:a)一组紧密耦合的控件,很难进行更改;或b)一些过于广义的层次结构,通过7个间接层次完成所有操作,使事情变得过于复杂,再次,我唯一的建议是充分利用描述性变量/方法名称,提取方法以避免重复,并尽可能保持简单。任何让你以后更容易改变的事情。。。
public class CustomPanel extends JPanel {
    private ClickGrid grid;

    public void registerMouseOutput(ClickGrid gridIN){}
    public void handleMouseInput(MouseEvent e){
        //Handle some mouse input
        grid.manipulateMouseData(e);
    }
}


public class ClickGrid {
    private boolean[][] 2darray = new boolean[3][2];
    private int[][] points_list = {{30, 100}, {200, 500}, {400, 300}};

    private GridDisplay gridDisplay;

    public void registerGridDisplay(GridDisplay griddisplayIN){
        gridDisplay = griddisplayIN;
        gridDisplay.setClickGrid(this);
    }
    public void manipulateMouseData(MouseEvent e) {
        //Do certain things based on mouse data
        gridDisplay.updateDisplay();
    }
}    

public class GridDisplay extends JPanel {
    private ClickGrid clickgrid;

    public void setClickGrid(ClickGrid clickgridIN){}
    public void updateDisplay(){}

    @Override
    public void paintComponent(){
        //display image at clickgrid.getPointsList(x,y) 
        //if clickgrid.get2dArray(x,y) is true;
    }
}