2017-09-18 14 views
0

私はちょっと困っています。これは数日間心を傷つけています。これを短縮する可能性のある方法があるかどうかは分かりません。インターフェース)、()更新:コードのクリーニングまたは短縮

public Pair<Map<Position, Unit>,Map<Position,City>> performAction 
      (Position p, Map<Position, Unit> unitMapping, Map<Position,City> cityMapping); 

それが原因の長さのうちにするためには非常に難しいのですが、私はこれが原因必須であるStrategyパターン(に、メソッド呼び出しから戻って2つのハッシュマップを転送するために使用しています、デザインパターンを変更することはできません)。

私はペアを割り当てるような短い方法があるかもしれないと考えていました。ペアのような2つの抽象的な値を割り当てます。ヒントや例が大歓迎です!

+4

ステップ1、オブジェクトの代わりにジェネリックとマップを使用しないでください。オブジェクト恐怖症を乗り越え、実際にJavaを書く。あなたの2つのマップが表すモデリングの概念は何ですか?そのオブジェクトを作成し、代わりに使用します。 –

+3

クラスを作成し、一緒にラップします。 'Map 'を含むフィールドを持つ 'Mapping'クラスを持っています。 Javaの型をエイリアスする方法はありません。 –

+0

私はあなたがそれらを一緒にラッピングすることによって何を意味するのかよく分かりませんか?私は他のメソッドでは反復の必要性のためにマッピングを使用しています。だから、精巧に注意してください? – Xsis

答えて

0

何のコメントが示唆することは、各(あるいはその両方)を保持することで、自分のクラスのマップ:それ以上の場合は

class UnitMapping { 
    Map<Position, Unit> mapping; 
} 

class CityMapping { 
    Map<Position, City> mapping; 
} 

、その後

public Pair<UnitMapping, CityMapping> performAction(Position p, 
                UnitMapping unitMapping, 
                CityMapping cityMapping); 

で両方のマップを保持するために理にかなっています1クラスは結合されているためですが、残りの部分はわかりません。

+0

2つのマップをまとめてラッピングすることには何か欠点がありますか?私は前後に少しジャンプしてきたし、両方を1つのクラスに絞ることが可能です。 – Xsis

+0

@Xsis両方のマップを1つのクラスに入れることは、それらが共同する機能を持っていることを意味します。また、これらのマップの量が同じであることを意味します。それはデザインの問題です。 – user1803551

関連する問題