0

異なるインターフェースを持ついくつかのオブジェクトに対して1つの呼び出しハンドラー(プロキシ)を定義することは可能ですか?

このプロキシがオブジェクトに対して行うこと(すべてのチェックなど)は同じであるため(そして、それらは、プロキシ上で1か所に配置することを好むロック管理テーブルを共有します)、

それを行う方法はありますか?

ありがとう、アリアン

4

2 に答える 2

1

それを行う方法は、共通の IH コードを表す基本クラスを用意し、特定の呼び出しごとにそれをサブクラス化することです。

それ以外の場合は、入ってくるオブジェクトを調べて、適切なアクションを決定できます。

public Object invoke(Object proxy, Method method, Object[] args) {
    if (proxy instanceof InterfaceA) {
        handleInterfaceA(proxy, method, args);
    } else if (proxy instanceof InterfaceB) {
        handleInterfaceB(proxy, method, args);
    }
}

しかし、Java には既にクラス ディスパッチ メカニズムがあるため、一連の IF や switch ステートメントよりも、それを使用する方が適切です。

于 2012-11-12T04:10:37.033 に答える