一个灵活的方法是将文本流嵌入另一个对象中,由这个对象加入缓存器或不规则化。我们称这个嵌入的对象为装饰(decorator)。这个装饰与文本流组件接口一致,因些它对使用文本流客户程序是透明的。在delphi中保持接口一致意味着从一个共公的组先继承,例中为ttextstream。装饰将请求向前转到到文本流,并且可能能转发前后执行一些额外的动作(如缓存器、不规则化),透明性使你可以递归的嵌套多个装饰,从面可以添加任意多的功能。
假设类ttextstream的接口如下:
type
ttextstream = class (tobject)
protected
function getendoftext: boolean; virtual; abstract;
public
function readline: string; virtual; abstract;
procedure writeline(const line: string); virtual; abstract;