1

我们有一个父类——平台。所有具体的设备类都继承自这个父类——Device1、Device2、……DeviceN。

根据设备输入,我们创建相应设备类的对象并相应地工作。

我在这段代码中观察到的几件事是基类(平台类)中设备特定行为的处理。例子,

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 回答