ことが必要となる場合があります。
デザインパターンでは、何度か登場します。
インタフェイスが、お互いを知っている。
例えば、Stateなんかもそうなりますね。
そういった時には、前方宣言、を使います。
前方宣言は、
- interface;
- class;
のように、メンバを宣言しないで、セミコロンで閉じます。
そして、後ろで、実際のメンバを再度宣言します。
以下はそのサンプルです
unit StateUnit ;
interface
type
// -------------------------------------------------------------------------
IContext = interface ; // 前方宣言
// -------------------------------------------------------------------------
// ================================================
// 下記2つのクラスは、お互いを引数とする
//
// 前方宣言をしないと、
// 先に宣言した方の引数は未定義となってしまう
// ================================================
IState = interface// -------------------------------------------------------
procedure DoClock( _context : IContext ; _hour : Integer ) ;
// 前方宣言しないとIContextが未定義となる
procedure DoUse( _context : IContext ) ;
procedure DoAlarm( _context : IContext ) ;
procedure DoPhone( _context : IContext ) ;
end ;
IContext = interface// -----------------------------------------------------
procedure ChangeState( _state : IState ) ;
end ;
implementation
end.