《GOF设计模式》—迭代器 (ITERATOR)—Delphi源码示例:内部迭代器(使用函数指针)
来源:互联网 发布:java编程规范 pdf 编辑:程序博客网 时间:2024/05/22 13:26
示例:内部迭代器(使用函数指针)
说明:
通过给迭代器传递一个函数指针(全局的或静态的)来实现内部迭代器。
代码:
unit uListTraverser1;
interface
uses uList,uListIterator;
type
TProcessItem = function(AItem: TObject): Boolean;
TListTraverser1 = class
private
FIterator: TListIterator;
FOnProcessItem: TProcessItem;
public
constructor Create(AList: TList1);
destructor Destroy; override;
//---
function Traverse(): Boolean;
//---
property OnProcessItem: TProcessItem read FOnProcessItem write FOnProcessItem;
end;
function PrintEmployee(AItem: TObject): Boolean;
implementation
uses uEmployee;
function PrintEmployee(AItem: TObject): Boolean;
begin
TEmployee(AItem).Print;
Result := true;
end;
constructor TListTraverser1.Create(AList: TList1);
begin
FIterator := TListIterator.Create(AList);
end;
destructor TListTraverser1.Destroy;
begin
FIterator.Free;
//---
inherited;
end;
function TListTraverser1.Traverse: Boolean;
begin
Result := false;
//---
if Assigned(FOnProcessItem) then
begin
with FIterator do
begin
First;
while not IsDone do
begin
Result := FOnProcessItem(CurrentItem);
if not Result then
Break;
//---
Next;
end;
end;
end;
end;
end.
procedure TForm1.Button7Click(Sender: TObject);
var
AEmployees: TList1;
AIterator: TListTraverser1;
begin
self.Memo1.Clear;
//---
AEmployees := TList1.Create;
try
with AEmployees do
begin
Add(TEmployee.Create('1',self.Memo1));
Add(TEmployee.Create('2',self.Memo1));
Add(TEmployee.Create('3',self.Memo1));
end;
//---
AIterator := TListTraverser1.Create(AEmployees);
try
AIterator.OnProcessItem := PrintEmployee;
AIterator.Traverse;
finally
AIterator.Free;
end;
finally
AEmployees.Free;
end;
end;
- 《GOF设计模式》—迭代器 (ITERATOR)—Delphi源码示例:内部迭代器(使用函数指针)
- 《GOF设计模式》—迭代器 (ITERATOR)—Delphi源码示例:用于复合对象的内部迭代器
- 《GOF设计模式》—迭代器 (ITERATOR)—Delphi源码示例:内部迭代器(依赖于子类)
- 《GOF设计模式》—迭代器 (ITERATOR)—Delphi源码示例:内部迭代器(封装不同类型的迭代)
- 《GOF设计模式》—迭代器 (ITERATOR)—Delphi源码示例:迭代器接口
- 《GOF设计模式》—迭代器 (ITERATOR)—Delphi源码示例:用于复合对象的外部迭代器
- 《GOF设计模式》—迭代器 (ITERATOR)—Delphi源码示例:基于游标的迭代器
- 《GOF设计模式》—迭代器 (ITERATOR)—Delphi源码示例:外部迭代器
- 《GOF设计模式》—迭代器 (ITERATOR)—Delphi源码示例:避免限定于一种特定的列表实现(多态迭代)
- 《GOF设计模式》—迭代器 (ITERATOR)—Delphi源码示例:健壮的迭代器
- 《GOF设计模式》—迭代器 (ITERATOR)—Delphi源码示例:避免限定于一种特定的列表实现(一般迭代)
- 《GOF设计模式》—职责链(CHAIN OF RESPONSIBILITY)—Delphi源码示例:表示请求(使用处理函数)
- 《GOF设计模式》—中介者 (MEDIATOR)—Delphi源码示例:Colleague—Mediator通信(使用观察者模式)
- 《GOF设计模式》—命令(COMMAND)—Delphi源码示例:参数化机制(使用命令模式)
- 《GOF设计模式》—解释器 (INTERPRETER)—Delphi源码示例:使用Flyweight模式共享终结符
- 《GOF设计模式》—创建型模式—Delphi源码示例:未基于模式的迷宫
- 《GOF设计模式》—原型(Prototype)—Delphi源码示例:基于类的原型管理器(使用TList实现)
- 《GOF设计模式》—原型(Prototype)—Delphi源码示例:基于类的原型管理器(使用TStringList实现)
- 关于m_pMainWnd
- 公共类LinearLayout
- WebLogic Server Hang产生的一般原因
- the currently displayed page contains invalid values
- 教你如何创建自己的 jQuery 插件
- 《GOF设计模式》—迭代器 (ITERATOR)—Delphi源码示例:内部迭代器(使用函数指针)
- 的大染缸地方
- 追MM与Java的23种设计模式(转)
- 自定义Annotation
- 把ffmpeg移植到android的总结
- ghost系统安装iis服主键的方法
- 《GOF设计模式》—迭代器 (ITERATOR)—Delphi源码示例:内部迭代器(依赖于子类)
- 有道桌面词典 4.0.22.8868 绿色中文正式版
- weblogic 探查内存不足/内存泄漏问题