1

親クラスであるPlatformがあります。すべての特定のデバイスクラスは、この親クラスから継承されます-Device1、Device2、.....DeviceN。

デバイスの入力に基づいて、それぞれのDeviceクラスのオブジェクトを作成し、それに応じて動作します。

このコードで私が観察したいくつかのことは、基本クラス(プラットフォームクラス)でのデバイス固有の動作の処理です。例、

function doSomething
{
    initiateSomething();
    .
    if ($base->getPlatform() eq 'Device1')
    {
        ........
    }
    startSomething();
    doneSomething();
}

このタイプの条件付きデバイス固有のコードは、親クラスのさまざまな場所に分散されています。このコードはDevice1に固有であり、他のデバイスには適用されません。このデバイス固有のコードを関数としてDevice1クラスに入れてここで呼び出すことを考えましたが、それも機能しませんでした。この関数はDevice1に対してのみ実装されているため、他のデバイスに対してこのコードを実行すると失敗します。

あなたの助けは大歓迎です。

4

1 に答える 1

1

これを実装するには、関数の事前/事後呼び出しに特定のフックを設定します。

function doSomething
{
    initiateSomething();
    .
    preDoSomething();
    startSomething();
    doneSomething();
}

BaseDevice
{
    preDoSomething(){/+no-op+/}
}

Device1
{
    preDoSomething()
    {
      ........
    }
}
于 2012-04-12T09:41:50.127 に答える