私は、単純な分散Java RMIアプリケーションを書いていると私はそうのような、それぞれがこれらのインターフェース上の様々な他のメソッドを呼び出すために、クライアント・インタフェースのマップを反復処理する必要がある方法、の束がありますこのJavaコードを記述するのに最も簡潔で/最良の方法は何ですか?
public void methodX (arg1, arg2) {
Iterator<String> itr = clients.keySet().iterator;
while (itr.hasNext()) {
String name = itr.next();
if (!"mod".equals(name)) {
try {
clients.get(name).methodXX(arg1, arg2);
} catch(RemoteException ex) {
// do something
}
}
}
}
public void methodY (arg1, arg2, arg3) {
Iterator<String> itr = clients.keySet().iterator;
while (itr.hasNext()) {
String name = itr.next();
if (!"mod".equals(name)) {
try {
clients.get(name).methodYY(arg1, arg2, arg3);
} catch(RemoteException ex) {
// do something
}
}
}
}
を代わりに、彼らはそれぞれそのように、MESSAGE_TYPEと呼ばれる新しい引数を渡すことで、単一のメソッドDOALLを呼び出すように
は今、私はこれらを修正:
public void methodX (arg1, arg2) {
doAll(MESSAGE_TYPE.METHODX, arg1, arg2, null);
}
public void methodY (arg1, arg2, arg3) {
doAll(MESSAGE_TYPE_METHODY, arg1, arg2, arg3);
}
そしてDOALL方法:
public void doAll(msg_type, arg1, arg2, arg3) {
Iterator<String> itr = clients.keySet().iterator;
while (itr.hasNext()) {
String name = itr.next();
if (!"mod".equals(name)) {
try {
switch(msg_type) {
case METHODX:
clients.get(name).methodXX(arg1, arg2);
break;
case METHODY:
clients.get(name).methodYY(arg1, arg2, arg3);
break;
}
} catch(RemoteException ex) {
// do something
}
}
}
}
これほどたくさんのメソッドがあります。したがって、doAllメソッドはたくさんの引数を取り、それを呼び出すメソッドXXはそれにヌルを渡します。
これを書き換えてより簡潔にすることはできますか?もしそうなら、あなたは例を挙げることができますか?
"...シンプルな分散Java rmiアプリケーション..."多くの擬態語? –