我想从我的应用程序逻辑隐藏系统特定的实现。我选择了以下设计(抽象示例):
public class Mesh implements Drawable {
@Override
public void draw(API api) {
api.render(this);
}
}
public class OpenGL implements API {
@Override
public void render(Drawable drawable) {
// render drawable, using OpenGL
// another API implementing class might use DirectX instead
}
}
特别是draw(API api)
方法对我来说很奇怪,因为传递给API
的对象会将自身传递给API
。
我(天真)的问题是:
答案 0 :(得分:1)
如果您将API传递给Mesh的构造函数,它将是一个Bridge模式。另一方面,它看起来类似于访客模式。
这种方法可能是正确的,但我不能从简短的片段中说出来。一个好的设计可能看起来像这样(这是访客模式的一个简单例子)。
在这种情况下,这个引用传递是有意义的,因为Drawable的实现选择API的正确(重载)方法。
如果没有更多信息,这就是我的建议。