hello_world_47 2015-07-31 09:07 采纳率: 0%
浏览 1864

关于代理模式(强制代理)的问题

看了好多网上的例子,大致都是下面这样:

客户端:

IProxy proxy = subject.GetProxy();
proxy.DoSomething();

Subject 对外暴露的方法:

public void DoSomething()
{
    if (null == proxy) {
        throw new Exception("...");
    }

    // TO DO
}

public ISubject GetProxy()
{
    if (null == proxy) {
        proxy = new Proxy(this);
    }
    return proxy;
}

问题是:
如果客户端如下操作一样能跳过代理:

IProxy proxy = subject.GetProxy();
subject.DoSomething();

因为只要GetProxy调用过,
DoSomething就可以跳过强制代理直接调用了。
请问该如何解决?

  • 写回答

3条回答 默认 最新

  • threenewbee 2015-07-31 14:21
    关注

    代理模式不是用来密封原有对象成员的。要做到你的要求,如果是C#,需要用codedom或者emit等动态生成类。

    评论

报告相同问题?

悬赏问题

  • ¥15 需要写计算过程,求解答
  • ¥15 向数据表用newid方式插入GUID问题
  • ¥15 multisim电路设计
  • ¥20 用keil,写代码解决两个问题,用库函数
  • ¥50 ID中开关量采样信号通道、以及程序流程的设计
  • ¥15 U-Mamba/nnunetv2固定随机数种子
  • ¥15 C++行情软件的tick数据如何高效的合成K线
  • ¥15 vba使用jmail发送邮件正文里面怎么加图片
  • ¥15 vb6.0如何向数据库中添加自动生成的字段数据。
  • ¥20 在easyX库下编写C语言扑克游戏跑的快,能实现简单的人机对战