我的项目中有一个多态结构,并考虑将其重写以使用Visitor Pattern
.
基本结构是:我有一些绘图对象(Rectangle, Ellipse, Line
,还有更多)当然有一些共同的行为。行为由接口定义Drawable
。到目前为止,拖动的行为应该始终相同,但选择的绘制它们应该不同。
因此,我介绍了abstract Figure
已经实现的类drag()
,但将实现委托drawSelected()
给扩展类。
当然,稍后将使用我需要的其他功能扩展该接口,并且还会出现 Figures 的其他实现。
现在我的问题是:您宁愿坚持这种设计,还是切换到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
}
}