设计模式学习笔记之代理模式

定义:代理模式(Proxy Pattern)对其他对象提供一种代理以控制对这个对象的访问。

看着有点迷糊,直接来个简单的例子。照例以猫狗为例。

例如:

// 动物类
abstract  class Animal
{
public abstract  void speak();
}
// 猫类,继承自动物类
class Cat:Animal
{
public override void speak()
{
Console.WriteLine("喵");
}
// 客户端调用
Animal cat = new Cat();
cat.speak();

看着运行结果:

image

所谓的代理模式,就是客户端访问的时候,不直接用猫类,而是用一个代理猫类,这个代理猫类与猫类要实现同一个接口,同时引用一个猫类,那么这个代理类就完全能够代理真正的猫了。如下:

// 代理猫类,继承自动物类,引用猫类
class ProxCat:Animal
{
private Cat cat;
public override void speak()
{
if (cat == null)
{
cat = new Cat();
}
cat.speak();
}
}
// 客户端调用
ProxCat pcat = new ProxCat();
pcat.speak();

看着运行结果,这个代理猫真的代替猫了:

image

image

参考资料:

作者:灵动生活

出处:http://www.cnblogs.com/ywqu

原文地址:https://www.cnblogs.com/liming1019/p/1654716.html