2016-09-18 6 views
0

私は概念を理解していても、多くの例を見て、それが継承より優先されることを知っていますが、 。位置ベースのアプリケーションに適用されたインタフェースの概念

実際には、初めてAndroid用の位置情報アプリケーションを構築しています。私はいくつかのインターフェースを設計して将来の仕事を楽にすることができるように感じるので、おそらく他のロケーションベースのアプリケーションをもう一度構築すると仮定しているからです。

私はマップ用のこのインターフェイスを構築しようとしています。現在、Googleマップの代わりにMapboxプラットフォームを使用しています。私は、今後Google Maps APIを使いたい場合に備えて、インターフェースを構築することをお勧めします。私はそれは私が使用するプラットフォームを重要ではありません、私は地図に実装しなければならない方法を知るために、このインタフェースを利用することができると信じて、だから、

public interface Mapable { 

    // Marker 
    Object createMarker(String id, Location location, int icon); 
    void addMarker(Object object); 
    void removeMarker(String id); 
    void moveMarker(String id, Location destination); 

    // Camera 
    Object createCamera(); 
    void addCamera(Object object); 
    void changeZoom(int zoom); 
    void setZoomRange(int min, int max); 
    void moveCamera(Location location, int zoom); 

    void updateElements(); 
} 

:だから私はこのような何かをした

クラス。

しかし、何かが見つからず、そのデザインや目的が正しくないように感じます。 これはインターフェイスを使用する正しい方法ですか?

答えて

1

これはインターフェイスを使用する正しい方法ですか?

はい!このように使うと、より柔軟なインタフェースが可能になります。

何かが見つからず、そのデザインや目的が正しくないように感じます。

たぶんあなたの代わりにマーカーやカメラなどObjectを使用してのIMarker呼ばれるインターフェースとICameraと呼ばれるインターフェイスを作成する必要がありますか?

public interface IMarker { 
    String getID(); 
    Location getLocation(); 
    @DrawableRes 
    int getIcon(); // You can also return a Drawable instead, if you want 

    // here you can add setters, but I don't think you need to 
} 

public interface ICamera { 
    int getZoom(); 
    int getMinZoom(); 
    int getMaxZoom(); 
    Location getLocation(); 

    void setZoom(int value); 
    void setZoomRange(int min, int max); 
    void move(Location location, int zoom); 
} 

その後、あなたはこのようなあなたのMappableインターフェース書くことができます。ありがとう、それが機能している

public interface Mapable { 

    // Marker 
    IMarker createMarker(String id, Location location, int icon); 
    void addMarker(IMarker marker); 
    void removeMarker(String id); 
    void moveMarker(String id, Location destination); 

    // Camera 
    ICamera createCamera(); 
    void addCamera(ICamera camera); 
    // Uncomment this line below if you want to be able to get all cameras 
    // ICamera[] getCameras(); 
    // Uncomment this line below if you want to be able to get the current camera 
    // ICamera getCurrentCamera(); 

    void updateElements(); 
} 
+0

を – AndroidDev

関連する問題