看了好多网上的例子,大致都是下面这样:
客户端:
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就可以跳过强制代理直接调用了。
请问该如何解决?