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 を継承することはできますが、一部の機能を抽象化する機会は 1 回しかありません (多重継承ではありません)。新しい機能ごとに繰り返し継承することはできますが、どの機能がより基本的であるかをどのように知ることができますか?
私は完璧主義者ではないので、この解決策は機能しますが、コーディングをしていると、「これは扱いにくい。もっと賢い方法があるはずだ」と考えていました。しかし、私はこの種の設計上の問題をたくさん抱えています。