tuppercasefilter = class (ttextfilter)
public
» function readline: string; override;
» procedure writeline(const line: string); override;
end;
implementation
function tuppercasefilter.readline: string;
begin
» result := uppercase(inherited readline);
end;
procedure tuppercasefilter.writeline(const line: string);
begin
» inherited writeline(uppercase(line));
end;
这个装饰类可以被子任何ttextstream目标使用:
function tclient.createoutput: ttextstream;
begin
» { 创建一个基类}
» case destination of
» dsfile: result := ttextfile.create(getfilename, fmcreate);
» dsprinter: result := tlineprinter.create;
» end;
» {判断是是否使用了装饰, 并使用同样的参数