Опять "про скрипты".
Но и не только.
О чём я?
Скажем так - есть класс, который выполняет какой-то функционал и порождает другой класс.
Можно сделать так:
А можно так (без порождения другого класса):
Мысль понятна?
Но и не только.
О чём я?
Скажем так - есть класс, который выполняет какой-то функционал и порождает другой класс.
Можно сделать так:
type TMyCompiler = class(TCompiler) protected function CompiledCodeClass: TCompiledCodeClass; override; end;//TMyCompiler TMyCompiledCode = class(TCompiledCode) protected procedure DoIt(const aContext: TContext); override; end;//TMyCompiledCode ... function TMyCompiler.CompiledCodeClass: TCompiledCodeClass; begin Result := TMyCompiledCode; end; procedure TMyCompiledCode.DoIt(const aContext: TContext); begin // do something with aContext end;
А можно так (без порождения другого класса):
type TCompiledCodeDelegate = procedure (const aContext: TContext) of object; ... TMyCompiler = class(TCompiler) protected function CompiledCodeClassDelegate: TCompiledCodeDelegate; class procedure MyDoIt(const aContext: TContext); end;//TMyCompiler ... function TMyCompiler.CompiledCodeClassDelegate: TCompiledCodeDelegate; begin Result := MyDoIt; end; class procedure TMyCompiler.MyDoIt(const aContext: TContext); begin // do something with aContext end;
Мысль понятна?
Комментариев нет:
Отправить комментарий