2017-09-04 9 views
2

次のデザインのどれがAPIにとってより良いと思われますか?その理由は何ですか? MapWrapperを単にマップへの参照を含むクラスであるAPIデザイン - オブジェクトまたはコレクションをパラメータとして使用しますか?

apiMethod(Map<A, B> aToB)

又は

apiMethod(MapWrapper<A, B> mapWrapper)

両方のアプローチの賛否両論は何ですか?

+0

一般的な 'Map'ではなく、モデルクラスをパラメータとして持つことをお勧めします。 'MapWrapper'も意味をなさない - それは価値を追加し、再び' Map'を持つだろうか? – lexicore

+0

最初のものは、ラッパーを追加しても意味がありません。おそらくマップを使うよりも優れたデザインが可能でしょう。 – Oleg

+0

の責任そのマップは何ですか? – Andrew

答えて

3

あなたは常に「最小限の」APIに努めます。この場合

:あなたのAPIは、地図を渡すときに動作します - そして、もちろん、あなたがそのパスを選択します。なぜあなたのクライアントに負担をかけるラップその地図に?

オプション1のプロは - これはまっすぐ進むパスです。

オプション2は、APIの使用を難しくするという欠点があります。

つまり、の「プロパティ」の「プロパティ」が「マップ」になっている場合は、マップとして渡す必要があります。しかし、 "中心的なテーマ"が何か違うなら、あなたは他のテーマに合ったものを渡します。

0

私はそれはあなたのAPIが本当に必要ないものを理解することは非常に困難ですので、APIのパラメータとしてMapを使用することは悪い習慣だと思います。私はのような方法を発見したいくつかの古代のコードでは:

doSomeStuff(String aa, String bb){ 
    return aa + bb; 
} 

と、あなたはあなたのAPIを呼び出すためにaabbが必要であることを知っている:

doSomeStuff(Session session){ 
    String aa = session.get("aa"); 
    String bb = session.get("bb"); 
    return aa + bb; 
} 

このコードのリファクタリングになります。

関連する問題