柳三公子

卑鄙是卑鄙者的通行证, 高尚是高尚者的墓志铭

导航

向各位请教一个关于Decorator模式的问题

Posted on 2005-03-18 10:14  柳三公子  阅读(808)  评论(0编辑  收藏  举报
现在有这样一个设计问题,我要对程序运行中的一段内容进行Log
由于Log的存储方式有多种,一种是保存的Log.txt文件,一种是显示在窗口的Memo控件中
而在保存Log之前,我需要对Log的内容进行格式化,还有可能需要对Log的内容进行过滤。

由于以上任务不是固定搭配的,所以我采用了Decorator模式
先实现一个标准的,写txt文件的Log对象。然后按照Decorator的方法,分别实现在Memo中
显示、格式化、过滤等对象。

问题是这样的:
过滤对象必须对原始的流数据进行检索,如果数据被格式化对象处理过之后,过滤对象就无
法正常工作。我如何在设计层面上保证过滤对象必须在格式化对象处理数据之前获得数据?
因为所有的Decorator对象都是独立、平等的。也就是:
只能 Log = new FilterDecorator(new FormatDecorator(new TextLog));
不能 Log = new FormatDecorator(new FilterDecorator(new TextLog));