通过阅读Judith Bishop的书“C#3.0设计模式”,我是刚开始潜入设计模式世界的新手。
作为代理章节末尾的练习,作者建议使用代理模式实现一个“拦截,监视和记录对Stream方法的每次调用”的自定义类。
我有点不确定我带来了什么,我想征求意见。在我放弃了一些想法之后(例如,从一个接口公开一些最常用的Stream方法开始),我最终创建了一个继承自Stream并覆盖其某些方法的类。这个类还有一个FileStream属性,我用它来调用实际的Stream方法和属性,我以前用这些方法包装来记录每个调用:
public class MyStream : Stream
{
private FileStream _stream;
public MyStream()
{
_stream = new FileStream();
}
public override bool CanRead
{
get
{
LogCall("CanRead");
return _stream.CanRead;
}
}
//More stream methods to override...
}
但是,这对我来说更像是装饰者。此外,自演习以来一个“坏”装饰者询问“流方法”,我使用“FileStream”作为实际类。
我觉得这不是代理模式的最准确的例子,我有点不确定我是否理解了这个练习。
关于我应该如何进行这项练习的任何建议? 提前谢谢,