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

时间:2012-11-22 17:40:21

标签: java oop class

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;
    }
}

似乎我是菊花链式连接这些类(它们只能彼此协作,而不是一般),而且它们变得过于具体。

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

我不是一个完美主义者,这个解决方案有效,但正如我在编码时,我在想“这感觉很笨拙。必须有更聪明的方法来做到这一点。”不过,我有很多这样的设计问题。

0 个答案:

没有答案