我有一个TDevice课程。有些设备会有蜂窝模块。所以我创建了一个接口IIMEI。其他设备将具有以太网模块。所以我创建了一个接口IMacAddress。
所以,我想创建另一个类,它是TDevice的子类,并实现IIMEI或IMacAddress或两者。
Delphi有可能吗?
答案 0 :(得分:3)
最简单的选择是从TInterfaced对象派生TDevice,并使用其他方法扩展您的后代。但要注意接口引用计数,否则最终会出现许多意外的访问冲突。
或者,您可以编写一个从TInterfacedObject继承的包装器对象,并将接口的实现委托给TDevice后代。在这种情况下,引用计数将不再是一个问题。
TMacAddressWrapper = class(TInterfacedObject, IMacAddress)
private
FDevice: TDevice;
property Device: TDevice read FDevice implements IMacAddress;
public
constructor Create(_Device: TDevice);
end;
constructor TMacAddressWrapper.Create(_Device: TDevice);
begin
inherited Create;
FDevice := _Device;
end;