Inheritance 继承-在基类中处理特定于子级的代码
我们有一个父类-平台。所有特定的设备类都继承自父类-Device1、Device2、。。。。。魔鬼 基于设备输入,我们创建相应设备类的对象并相应地工作 我在这段代码中观察到的几件事是在基类(平台类)中处理特定于设备的行为。例如Inheritance 继承-在基类中处理特定于子级的代码,inheritance,parent-child,Inheritance,Parent Child,我们有一个父类-平台。所有特定的设备类都继承自父类-Device1、Device2、。。。。。魔鬼 基于设备输入,我们创建相应设备类的对象并相应地工作 我在这段代码中观察到的几件事是在基类(平台类)中处理特定于设备的行为。例如 function doSomething { initiateSomething(); . if ($base->getPlatform() eq 'Device1') { ........ } sta
function doSomething
{
initiateSomething();
.
if ($base->getPlatform() eq 'Device1')
{
........
}
startSomething();
doneSomething();
}
这种类型的特定于设备的条件代码分布在父类中的各个位置。此代码特定于设备1,不适用于其他设备。我曾想过将这个特定于设备的代码作为函数放在Device1类中,并在这里调用它,但这也不起作用。因为此函数仅为Device1实现,所以为其他设备运行此代码将失败
非常感谢您的帮助。您可以通过为函数的前/后调用设置特定的挂钩来实现这一点:
function doSomething
{
initiateSomething();
.
preDoSomething();
startSomething();
doneSomething();
}
BaseDevice
{
preDoSomething(){/+no-op+/}
}
Device1
{
preDoSomething()
{
........
}
}
您可以通过为函数的前/后调用提供特定的挂钩来实现这一点:
function doSomething
{
initiateSomething();
.
preDoSomething();
startSomething();
doneSomething();
}
BaseDevice
{
preDoSomething(){/+no-op+/}
}
Device1
{
preDoSomething()
{
........
}
}