gpt4 book ai didi

Delphi - 从类和接口(interface)继承(适配器模式)?

转载 作者:行者123 更新时间:2023-12-03 15:17:37 26 4
gpt4 key购买 nike

我正在尝试执行 GoF 适配器模式,在 C# 示例中,我遵循的 Adapter 类继承了原始类和一个适配接口(interface)。据我所知,在Delphi(2007)中,这是不可能的,或者是吗?因为如果一个类继承一个接口(interface),它需要从 TInterfacedObject 继承,并且由于 Delphi 不允许多个类继承,这就是故事的结尾。我无法同时继承自定义类和接口(interface)。

我说得对吗?

谢谢。

我已在 http://delphipatterns.blog.com/2011/02/22/decorator-5/ 上实现了此模式

最佳答案

不,它不正确。您可以向任何您喜欢的类添加接口(interface),如下所示:

type
IAdapter = interface
procedure DoSomething;
end;

TAdapter = class(TBaseClass, IInterface, IAdapter)
private
FRefCount: Integer;
procedure DoSomething;
protected
function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;
function _AddRef: Integer; stdcall;
function _Release: Integer; stdcall;
end;

function TAdapter.QueryInterface(const IID: TGUID; out Obj): HResult;
begin
if GetInterface(IID, Obj) then
Result := 0
else
Result := E_NOINTERFACE;
end;

function TAdapter._AddRef: Integer;
begin
Result := InterlockedIncrement(FRefCount);
end;

function TAdapter._Release: Integer;
begin
Result := InterlockedDecrement(FRefCount);
if Result = 0 then
Destroy;
end;

procedure TAdapter.DoSomething;
begin
end;

关于Delphi - 从类和接口(interface)继承(适配器模式)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5353656/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com