
type
//target interface
IEuroSocket = interface
function GetPower: string;
end;
TUsSocket = class
public
function GetUsPower: string;
end;
//object adapter: wraps the adaptee
TSocketAdapter = class(TInterfacedObject,
IEuroSocket)
private
FSocket: TUsSocket;
public
constructor Create(Socket: TUsSocket);
function GetPower: string;
end;
function TUsSocket.GetUsPower: string;
begin
Result := '110V';
end;
constructor TSocketAdapter.Create(
Socket: TUsSocket);
begin
FSocket := Socket;
end;
function TSocketAdapter.GetPower: string;
begin
Result := FSocket.GetUsPower + ' as 220V';
end;
var
Socket: IEuroSocket;
begin
Socket := TSocketAdapter.Create(
TUsSocket.Create);
WriteLn(Socket.GetPower);
//110V as 220V
end.