2011-03-10 90 views
1

我想从我的应用程序逻辑中隐藏系统特定的实现。我选择了以下的设计(抽象的例子):因为该目的,API被传递到从应用程序隐藏系统特定的详细信息

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

我的(幼稚)的问题是:

  1. 最终这是一个桥接模式?
  2. 这种方法是否正确实施? (目的是隐藏系统细节。)
  3. 你会推荐一个更好的方法吗?

回答

1

如果您将API传递给Mesh的构造函数,它将成为桥接模式。另一方面,它看起来类似于访问者模式。

这种方法可能是正确的,但我无法从短片段中得知。一个好的设计可能看起来像这样(这是一个访客模式的简单例子)。

  • 接口API
    • 空隙渲染(网眼目);
    • void render(Sprite sprite);
  • 接口可绘制
    • 空隙平局(API API);
  • 类网实现可绘制
    • 空隙平局(API API){api.render(本); }
  • 类的Sprite实现绘制对象
    • 空隙平局(API API){api.render(本); }
  • 类组实现可绘制
    • 空隙平局(API API){对于(可绘制对象E:元件)e.draw(API); }

在这种情况下,该参考传球是有道理的,因为可绘制的实施方式中选择API的正常(过载)方法。

没有更多的信息,这是我会建议。

相关问题