モナーの *やさしい* Delphi質問スレ Ver3
■ このスレッドは過去ログ倉庫に格納されています
0686667
NGNG長文ごめんなさい。
implementsは、委譲を一括して行えます。(委任というらしい)
type
IObserver = interface //interfaceは全メソッドが virtual = 0なクラス
procedure Notify;
end;
IObservable = interface
procedure AddObserver(const A: IObserver);
procedure RemoveObserver(const A: IObserver);
end;
で、IObservableのメソッドを実装したクラスTObservableImplがあるとします。
TWinControlから派生してなおかつIObservableを実装したい時、
type
TMyControl = class(TWinControl, IObservable)
FObservable: IObservable;
property AsObservable: IObservable read FObservable implements IObservable;
end;
ってな具合に実装を全て他のオブジェクトに押しつけることができます。
要はvirtual継承無しで、全てがTObjectからの派生というルールを守ったまま、多重継承する仕掛けですが、
実行時にFObservableの示す先を取り替えるなんて真似もできます。
最大のメリットとしては、委譲用メソッドをいちいち書く手間を省けることです。
( 恐らく直接関数ポインタで呼ばれるのでしょうから委譲用メソッドかますより効率いいかも?←これは未調査 )
■ このスレッドは過去ログ倉庫に格納されています