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,但是我只有一次机会抽象一些功能(没有多重继承)。我可以为每个新功能重复继承,但如何知道哪些功能更基础?
我不是一个完美主义者,这个解决方案很有效,但是当我编码时,我在想“这感觉很笨拙。必须有更智能的方法来做到这一点。” 不过,我有很多这样的设计问题。