《GOF设计模式》—职责链(CHAIN OF RESPONSIBILITY)—Delphi源码示例:帮助机制
来源:互联网 发布:java 架构师培训课程 编辑:程序博客网 时间:2024/05/21 01:15
示例:帮助机制
说明:
代码: unit uHelp; interface uses Dialogs; const NO_HELP_TOPIC = -1; PRINT_TOPIC = 1; PAPER_ORIENTATION_TOPIC = 2; APPLICATION_TOPIC = 3; type TTopic = integer; THelpHandler = class private FSuccessor: THelpHandler; FTopic: TTopic; public constructor Create(h: THelpHandler = nil; t: TTopic = NO_HELP_TOPIC); //--- procedure SetHandler(h: THelpHandler; t: TTopic); virtual; function HasHelp(): boolean; virtual; procedure HandleHelp(); virtual; end; TWidget = class(THelpHandler) private FParent: TWidget; public constructor Create(w: TWidget; t: TTopic = NO_HELP_TOPIC); reintroduce; virtual; end; TButton1 = class(TWidget) public procedure HandleHelp(); override; end; TDialog1 = class(TWidget) public constructor Create(h: THelpHandler; t: TTopic = NO_HELP_TOPIC); reintroduce; //--- procedure HandleHelp(); override; end; TApplication1 = class(THelpHandler) public constructor Create(t: TTopic); reintroduce; //--- procedure HandleHelp(); override; end; implementation constructor THelpHandler.Create(h: THelpHandler; t: TTopic); begin SetHandler(h,t); end; procedure THelpHandler.SetHandler(h: THelpHandler; t: TTopic); begin FSuccessor := h; FTopic := t; end; function THelpHandler.HasHelp(): boolean; begin Result := (FTopic <> NO_HELP_TOPIC); end; procedure THelpHandler.HandleHelp(); begin if FSuccessor <> nil then FSuccessor.HandleHelp(); end; constructor TWidget.Create(w: TWidget; t: TTopic); begin inherited Create(w,t); //--- FParent := w; end; procedure TButton1.HandleHelp(); begin if self.HasHelp then ShowMessage('Button Help') else inherited; end; constructor TDialog1.Create(h: THelpHandler; t: TTopic); begin inherited Create(nil,t); //--- self.SetHandler(h,t); end; procedure TDialog1.HandleHelp(); begin if self.HasHelp then ShowMessage('Dialog Help') else inherited; end; constructor TApplication1.Create(t: TTopic); begin inherited Create(nil,t); end; procedure TApplication1.HandleHelp(); begin ShowMessage('Application Help'); end; end. procedure TForm1.Button1Click(Sender: TObject); var AnApplication: TApplication1; APrintDialog: TDialog1; APrintButton: TButton1; begin AnApplication := TApplication1.Create(APPLICATION_TOPIC); APrintDialog := TDialog1.Create(AnApplication,PRINT_TOPIC); APrintButton := TButton1.Create(APrintDialog,PAPER_ORIENTATION_TOPIC); try APrintButton.HandleHelp; finally AnApplication.Free; APrintDialog.Free; APrintButton.Free; end; end;
- 《GOF设计模式》—职责链(CHAIN OF RESPONSIBILITY)—Delphi源码示例:帮助机制
- 《GOF设计模式》—职责链(CHAIN OF RESPONSIBILITY)—Delphi源码示例:doesNotUnderstand机制
- 《GOF设计模式》—职责链(CHAIN OF RESPONSIBILITY)—Delphi源码示例:职责链接口
- 《GOF设计模式》—职责链(CHAIN OF RESPONSIBILITY)—Delphi源码示例:表示请求(使用处理函数)
- 《GOF设计模式》—职责链(CHAIN OF RESPONSIBILITY)—Delphi源码示例:表示请求(使用请求对象)
- 《GOF设计模式》学习笔记--职责链Chain Of Responsibility
- GOF设计模式之CHAIN OF RESPONSIBILITY(职责链)
- 设计模式—Chain of Responsibility职责链模式
- Chain of Responsibility(职责链设计模式)
- 笔记:Gof设计模式--Chain of Responsibility
- 设计模式之对象行为型模式 — CHAIN OF RESPONSIBILITY (职责链)模式
- 重温设计模式(三)——职责链模式(chain of responsibility) [转载]
- 重温设计模式(三)——职责链模式(chain of responsibility)
- 重温设计模式(三)——职责链模式(chain of responsibility)
- Java设计模式——职责链模式(Chain of Responsibility)
- 设计模式学习笔记——Chain of Responsibility职责链模式
- 设计模式学习笔记(十九)—Chain of Responsibility职责链模式
- 设计模式学习笔记(十九)—Chain of Responsibility职责链模式
- 《GOF设计模式》—职责链(CHAIN OF RESPONSIBILITY)—Delphi源码示例:职责链接口
- 关于struts.xml中的namespace的一些疑问
- word复制图片 导致桌面图标变成蓝色阴影怎么都去不掉
- hdoj1005
- 不用中间变量,交换两个变量的值的方法
- 《GOF设计模式》—职责链(CHAIN OF RESPONSIBILITY)—Delphi源码示例:帮助机制
- Struts2配置详解
- 还原IE的*.mht文件关联
- MySQL 字段类型说明
- Linux内核设计与实现读书笔记(2)-进程管理
- 《GOF设计模式》—职责链(CHAIN OF RESPONSIBILITY)—Delphi源码示例:表示请求(使用处理函数)
- 《GOF设计模式》—职责链(CHAIN OF RESPONSIBILITY)—Delphi源码示例:表示请求(使用请求对象)
- 近期项目总结之时间格式
- (转)如何成为一名黑客|看看什么是真正的黑客