Canvas
特定のdomain
オブジェクトを異なる で表す必要があるの次の設計について質問がありますfigures
。
ドメイン オブジェクトとして機能する「エンクロージング」クラスが必要です。ユーザーに提示する必要があるデータを保持しますState
。この State は変数として名前、もちろん状態などを持っています。
この状態は、 で視覚的に表す必要がありRectangle
ます。したがって、私は次を使用して考えましたComposition Pattern
:
interface Drawable {
void draw();
}
class Rectangle implements Drawable {
@Override
void draw() {
//draw the state as a rectangle depending on the state variables, draw the name etc.
}
}
interface Figure {
Drawable getDrawable();
}
class State implements Figure {
boolean state;
Rectangle rectangle;
public Drawable getDrawable() { return rectangle; }
}
今、私はおそらく他のオブジェクトも持っており、それらも実装しているため、それらをペイントFigure
するための固有のものを提供しています。Drawable
ここでの私の問題は次のとおりです。以下はdraw()
すべてのオブジェクトに対して正しいメソッドを実行しますが、 draw メソッドはそれを囲むクラスのすべての情報を必要とします。
List<Figure> list;
for (Figure obj : list) {
obj.getDrawable().draw();
}
メソッドは、たとえば、それを囲んでいるオブジェクトの名前変数などをどのようにdraw()
知ることができますか?State
State
私が思いついた唯一のことは次のとおりです。
interface Drawable {
void draw(Figure figure);
}
for (Drawable obj : list) {
obj.getDrawable().draw(obj);
}
しかし、オブジェクトを呼び出し、同じステートメントでこのオブジェクトをパラメーターとして指定するのは正しくないと感じます!
どうすればこれをより良く行うことができますか?