Saltar al contenido

Herencia múltiple para interfaces.

Clara, parte de este staff, nos ha hecho el favor de escribir este escrito porque controla perfectamente este tema.

Solución:

No hay herencia de interfaz múltiple en Delphi ya que no hay herencia múltiple en Delphi en absoluto. Todo lo que puede hacer es hacer que una clase implemente más de una interfaz a la vez.

TMyClass = class(TInterfacedObject, IInterfaceA, IInterfaceB)

En Delphi, las interfaces no pueden heredar múltiples interfaces, pero las clases pueden implementar múltiples interfaces. Si diseña sus componentes correctamente (busque ISP – principio de segregación de interfaz) no debería necesitar tener interfaces heredadas de interfaces.

En mi humilde opinión, en este caso, debe definir tres tipos. Uno por interfaz y tercero para herencia múltiple:

  IInterfaceA = interface
     procedure A;
  end;

  IInterfaceB = interface
    procedure B;
  end;

  TiA = class(TInterfacedObject, IInterfaceA)
    procedure A;
  end;

  TiB = class(TInterfacedObject, IInterfaceB)
    procedure B;
  end;

  TMyObject = class(TInterfacedObject, IInterfaceA, IInterfaceB)
  private
    _iA : IInterfaceA;
    _iB : IInterfaceB;
    function getiA : IInterfaceA;
    function getiB : IInterfaceB;
  public
    property iA : IInterfaceA read getiA implements IInterfaceA;
    property iB : IInterfaceB read getiB implements IInterfaceB;
  end;
.....
 TMyObject 

function TMyObject.getiA: IInterfaceA;
begin
  if not Assigned(_iA) then _iA := TIA.Create;
  Result := _iA;
end;

function TMyObject.getiB: IInterfaceB;
begin
  if not Assigned(_iB) then _iB := TIB.Create;
  Result := _iB;
end;

Si haces scroll puedes encontrar las referencias de otros administradores, tú también tienes el poder dejar el tuyo si te gusta.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *