⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chainofresponsibilityunit2.pas

📁 DELPHI设计模式书籍
💻 PAS
字号:
unit ChainOfResponsibilityUnit2;

interface
type
  TRequestType = (RHelp, RPrint, RPreview);

  TRequest = class
  public
    constructor Create;
    function GetKind(): TRequestType; virtual;
  end;

  THelpRequest = class(TRequest)
  public
    constructor Create;

  end;

  TPrintRequest = class(TRequest)
  public
    constructor Create;

  end;


  THandler = class
  private
    f_successor: THandler;
  public
    constructor Create;
    procedure HandleRequest(theRequest: TRequest); virtual;
    procedure HandleHelp(theHelpRequest: THelpRequest); virtual;
    procedure HandlePrint(thePrintRequest: TPrintRequest); virtual;
  end;

  TExtendedHandler = class(THandler)
  public
    constructor Create;
    procedure HandleRequest(theRequest: TRequest); virtual;
  end;

implementation

constructor TRequest.Create;
begin
//.....
end;

function TRequest.GetKind(): TRequestType;
begin
//.....
end;

constructor THelpRequest.Create;
begin
//.....
end;

constructor TPrintRequest.Create;
begin
//.....
end;

constructor THandler.Create;
begin
//.....
end;

procedure THandler.HandleHelp(theHelpRequest: THelpRequest);
begin
//.....
end;

procedure THandler.HandlePrint(thePrintRequest: TPrintRequest);
begin
//.....
end;


procedure THandler.HandleRequest(theRequest: TRequest);
begin
  case theRequest.GetKind() of
    RHelp: Self.HandleHelp(THelpRequest(theRequest)); //RTTI
    RPrint: Self.Handleprint(TPrintRequest(theRequest)); //RTTI
    //.........
  else
    //......
  end;
end;

constructor TExtendedHandler.Create;
begin
//.....
end;

procedure TExtendedHandler.HandleRequest(theRequest: TRequest);
begin
  case theRequest.GetKind of
    RPreview: ; //矪瞶preview
    //.......
  else
    inherited; //⊿砍届玥パ

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -