代理模式
[ Proxy ]
[
抽象接口 : 由被代理类抽象出来的接口 , 被代理类实现了所有方法
被代理类 : 原始需要调用的对象 , 里面定义了一些列方法
代理类 : 同样继承了抽象接口 , 并且在类的内部有一个被代理类的引用 , 生命周期和代理类一样 , 在代理类继承接口的方法里 , 调用被代理类的方法
]
代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。
所谓代理 , 就是一个人或者一个机构代表另一个人或者另一个机构采取行动 。
在一些情况下 , 一个客户不想或者不能改直接引用一个对象 , 而代理对象可以在客户端或目标对象之间起到中介的作用。
抽象出 实际调用类(Autcal) 的要代理的方法 , 做成接口
代理类 继承接口 , 保留一个实际调用类的引用
代理类 构造函数里 , 构造实际调用类的实例
代理类 重写接口里的方法 , 在方法里调用 实际调用类 的相同方法
源码:
public interface IProxy
{
void Test();
}
// <summary>
// 实际使用的类(被代理的类)
// </summary>
public class Actual : IProxy
{
private string Name = "";
public Actual(string name)
{
Name = name;
}
#region IProxy 成员
public void Test()
{
Console.WriteLine(Name + " Actual Test ");
}
#endregion
}
// <summary>
// 代理类 , 代理类给实际使用类做代理
// </summary>
public class Proxy : IProxy
{
private Actual actual;
public Proxy(string name)
{
actual = new Actual(name);
}
#region IProxy 成员
public void Test()
{
actual.Test();
}
#endregion
}
class Program
{
static void Main(string[] args)
{
Proxy p = new Proxy("小强");
p.Test();
Console.Read();
}
}