私のプロジェクトにはポリモーフィズム構造があり、それを書き換えて使用する価値があるかどうかを考えていますVisitor Pattern
。
基本的な構造は次のとおりです。いくつかの描画オブジェクトがあります(Rectangle, Ellipse, Line
が、もちろんいくつかの動作が共通しています。動作はインターフェイスによって定義されますDrawable
。これまでのところ、ドラッグは常に同じように動作するはずですが、選択したものを描画すると異なるはずです。
abstract Figure
そのため、既に を実装しているが、 の実装を拡張クラスにdrag()
委譲するクラスを導入しました。drawSelected()
もちろん、インターフェイスは後で必要な機能を追加して拡張され、Figure の追加の実装も行われる予定です。
ここで私の質問: このデザインに固執するか、に切り替えるかVisitor
。もしそうなら、なぜですか?特に、現在のアプローチが、オブジェクト自体の内部で選択を描画するためのロジック/アルゴリズムを持つのに適しているかどうかはわかりません。
interface Drawable {
void drag();
void drawSelected();
}
abstract class Figure implements Drawable {
protected int x, y, w, h;
@Override
void drag() {
//implementation always the same for different figures
}
}
class Rectangle extends Figure {
@Override
drawSelected() {
//draw a dashed rectangle around this object
}
}
class Ellipse extends Figure {
@Override
drawSelected() {
//draw a dashed ellipse around this object
}
}
class Line extends Figure {
@Override
drawSelected() {
//draw the line itself dashed
}
}