📄 chainofresponsibilityunit2.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 + -