我是一个新手,通过阅读 Judith Bishop 的书“C# 3.0 设计模式”,刚刚开始涉足这个设计模式的世界。
作为 Proxy 章节末尾的练习,作者建议使用 Proxy 模式实现一个自定义类,该类“拦截、监视和记录对 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...
}
然而,这对我来说更像是一个装饰器。此外,自练习以来,“坏”装饰器询问“流方法”,我使用“文件流”作为实际类。
我不觉得这是代理模式最准确的例子,我有点不确定我是否理解了这个练习。
关于我应该如何进行这项练习的任何建议?提前致谢,