定义:代理模式(Proxy Pattern)对其他对象提供一种代理以控制对这个对象的访问。
看着有点迷糊,直接来个简单的例子。照例以猫狗为例。
例如:
// 动物类 abstract class Animal { public abstract void speak(); }
// 猫类,继承自动物类 class Cat:Animal { public override void speak() { Console.WriteLine("喵"); }
// 客户端调用 Animal cat = new Cat(); cat.speak();
看着运行结果:
所谓的代理模式,就是客户端访问的时候,不直接用猫类,而是用一个代理猫类,这个代理猫类与猫类要实现同一个接口,同时引用一个猫类,那么这个代理类就完全能够代理真正的猫了。如下:
// 代理猫类,继承自动物类,引用猫类 class ProxCat:Animal { private Cat cat; public override void speak() { if (cat == null) { cat = new Cat(); } cat.speak(); } }
// 客户端调用 ProxCat pcat = new ProxCat(); pcat.speak();
看着运行结果,这个代理猫真的代替猫了:
参考资料:
作者:灵动生活