什么是代理模式?
代理模式是通过一个简单的对象来实现复杂的对象。当创建一个对象需要消耗很多时间或资源的时候,代理类可以在你需要的时候才创建这个复杂对象。就像是别人借你10万块但是不急着用,所以你也不急着给,等他真正需要的时候再给他。也像厂家找一个渠道代理一样,东西先借给别人卖,不急着收款,周末或者月底再清账。代理是充当两个不相干终端的沟通者角色了
什么时候使用代理模式最合适?
- 加载一个对象,比如一幅大的图片,需要花很多时间来加载。
- 计算结果需要很长的一段时间,可以显示一个临时的结果来继续计算,提示用户等待
- 对象在远程机器上,通过网络加载需要很多时间
- 访问对象的权限受到限制,譬如跨域操作,或者查询web service。通过代理类来得到授权
创建一个winform程序,在Form1种加入 init() 初始化一个ImageProxy对象。winform中已经有一个picturebox对象和一个button对象
form1.cs









picurebox控件通过imgProxy.getImage() 方法来获取一个比较大的图片,这个图片可能非常大,或者是国外的服务器速度很慢,抑或者是跨域的操作,防盗链了。




一个proxy基类















ImageProxy.cs

















///使用了一个计时器,5秒钟
timer = new Timer (new TimerCallback (timerCall), this, 5000, 0);
}
//-----

private void timerCall(object obj) ...{
done = true;
timer.Dispose ();
}
//-----

public Image getImage() ...{

Imager img; /**////继承了一个Imager类的接口方法getImage()
if (done)
img = new FinalImage ();
else
img = new QuickImage ();
return img.getImage ();
}
}
}









































FinalImage.cs


















