2011-03-10 106 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的正常(過載)方法。

沒有更多的信息,這是我會建議。

相關問題