- 博客(14)
- 收藏
- 关注
原创 《GOF设计模式》—解释器 (INTERPRETER)—Delphi源码示例:对布尔表达式进行操作和求值
示例:对布尔表达式进行操作和求值 说明: (1)、文法 在这个语言中终结符是布尔变量,即常量true和false。"非终结符表示"包含运算符and,or和not的布尔表达式。 BooleanExp ::= VariableExp | Constant | OrExp | AndExp | NotExp | '(' BooleanExp ')' AndExp ::= BooleanExp 'and' BooleanExp OrExp ::=
2011-01-21 09:45:00 613
原创 《GOF设计模式》—解释器 (INTERPRETER)—Delphi源码示例:字符串搜索
示例:字符串搜索 说明: 搜索匹配一个模式的字符串是一个常见问题。正则表达式是描述字符串模式的一种标准语言。与其为每一个正则表达式都构造一个特定的算法,不如使用一种通用的搜索算法来解释执行一个正则表达式,该正则表达式定义了待匹配字符串的集合。 (1)、文法 正则表达式用下列文法定义: expression ::= literal | alternation | sequence | repetition | '(' expressi
2011-01-21 09:37:00 532
原创 《GOF设计模式》—解释器 (INTERPRETER)—Delphi源码示例:使用Flyweight模式共享终结符
示例:使用Flyweight模式共享终结符 说明: 在一些文法中,一个句子可能多次出现同一个终结符。此时最好共享那个符号的单个拷贝。计算机程序的文法是很好的例子-每个程序变量在整个代码中将会出现多次。 代码: unit uExpression; interface uses SysUtils,Contnrs; type TAbstrac
2011-01-21 09:34:00 379
原创 《GOF设计模式》—解释器 (INTERPRETER)—Delphi源码示例:解释器接口
示例:解释器接口 说明: (1)、定义 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 语言:Pacal语言 文法:Pacal 的EBNF语法 表示:文法元素对象,如语句、变量、常量等对象。 解释器:一个方法或操作。使用"文法元素对象"解释"Pacal脚本"生成语法树,对于语法树定义一个"解释器"操作,执行改操作返回结果。 句子:一段Pacal脚本。
2011-01-21 09:33:00 580
原创 《GOF设计模式》—命令(COMMAND)—Delphi源码示例:支持修改日志
示例:支持修改日志 说明: ? 支持修改日志,这样当系统崩溃时,这些修改可以被重做一遍。在Command接口中添加装载操作和存储操作,可以用来保持变动的一个一致的修改日志。从崩溃中恢复的过程包括从磁盘中重新读入记录下来的命令并用Execute操作重新执行它们。 界面: object Form2: TForm2 Left = 192 Top = 110 Width = 334 Height
2011-01-13 10:20:00 467
原创 《GOF设计模式》—命令(COMMAND)—Delphi源码示例:支持取消和重做(多次取消2)
示例:多次取消2 说明: 有时可能不得不将一个可撤消的命令在它可以被放入历史列表中之前先拷贝下来。这是因为执行原来的请求的命令对象将在稍后执行其他的请求。如果命令的状态在各次调用之间会发生变化,那就必须进行拷贝以区分相同命令的不同调用。 例如,一个删除选定对象的删除命令(DeleteCommand)在它每次被执行时,必须存储不同的对象集合。因此该删除命令对象在执行后必须被拷贝,并且将该拷贝放入历史列表中。在放入历史列表之前必须被拷贝的那些Command起着原型(参见Prototy
2011-01-13 10:18:00 471
原创 示例:Windows Live Writer内容转换工具
示例:Windows Live Writer内容转换工具 说明: 最近使用Windows Live Writer写博客时,发觉行距过大、字体不好看。而手动修改博客的Html内容又很麻烦,所以随手写了这个工具。 界面: object Form1: TForm1 Left = 192 Top = 114 Width = 682 Height = 388 Cap
2011-01-13 10:14:00 399
原创 《GOF设计模式》—命令(COMMAND)—Delphi源码示例:支持取消和重做(多次取消1)
示例:多次取消1 说明: 若要支持多级的取消和重做,就需要有一个已被执行命令的历史列表 (historylist),该列表的最大长度决定了取消和重做的级数。历史列表存储了已被执行的命令序列。向后遍历该列表并逆向执行 (reverse-executing)命令是取消它们的结果;向前遍历并执行命令是重执行它们。 如果该命令的状态在执行时从不改变,则不需要拷贝,而仅需将一个对该命令的引用放入历史列表中。 界面:
2011-01-13 09:54:00 559
原创 《GOF设计模式》—命令(COMMAND)—Delphi源码示例:支持取消和重做(一次取消)
示例:一次取消 说明: 若应用只支持一次取消操作,那么只需存储最近一次被执行的命令。 界面: object Form2: TForm2 Left = 192 Top = 110 Width = 344 Height = 219 Caption = 'Form2' Color = clBtnFace Font.Charset = DEFAULT_CHARSET
2011-01-13 09:51:00 547
原创 《GOF设计模式》—命令(COMMAND)—Delphi源码示例:在不同的时刻指定、排列和执行请求
示例:在不同的时刻指定、排列和执行请求 说明: 一个Command对象可以有一个与初始请求无关的生存期。如果一个请求的接收者可用一种与地址空间无关的方式表达,那么就可将负责该请求的命令对象传送给另一个不同的进程(或命令队列)并在那儿实现该请求。 代码: unit uCommand2; interface uses SysUtils,Classes,Dialogs,
2011-01-13 09:46:00 501
原创 《GOF设计模式》—命令(COMMAND)—Delphi源码示例:参数化机制(使用命令模式)
示例:使用命令模式 说明: Command模式是回调机制的一个面向对象的替代品。 代码: unit uCommand1; interface type TCommand = class public procedure Execute(); virtual; abstract; end; TShowCommand =
2011-01-13 09:43:00 444
原创 《GOF设计模式》—命令(COMMAND)—Delphi源码示例:参数化机制(回调函数)
示例:回调函数 说明: 你可用过程语言中的回调(callback)函数表达这种参数化机制。所谓回调函数是指函数先在某处注册,而它将在稍后某个需要的时候被调用。 代码: unit uCallback; interface type TAction1 = procedure(); var FShowAction1: TAction1; i
2011-01-13 09:41:00 370
原创 《GOF设计模式》—命令(COMMAND)—Delphi源码示例:文档编辑
示例:文档编辑 说明: 界面: object Form1: TForm1 Left = 420 Top = 246 Width = 388 Height = 221 Caption = 'Form1' Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Col
2011-01-08 10:02:00 425
原创 《GOF设计模式》—命令(COMMAND)—Delphi源码示例:命令接口
示例:命令接口 说明: (1)、定义 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。 (2)、结构 命令: Command:命令对象。声明执行操作的接口。 ConcreteCommand:具体命令对象。将一个接收者对象绑定于一个动作;调用接收者相应的操作,以实现Execute。 Invoker:发送者对象。要求该命令执行这个请求。 Receiver:接收者对象。知道如何实施与执行一个请求相关的
2011-01-08 09:43:00 529
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人