1。定义
代理模式:为其他对象提供一种代理以控制对这个对象的访问
2,UML图
3,代理模式基本代码
namespace ProxyMode
{
public abstract class Subject
{
public abstract void Request();
}
public class RealSubject : Subject
{
public override void Request()
{
Debug.Log("RealSubject Behaviour");
}
}
public class Proxy : Subject
{
private RealSubject RealSubject;
public Proxy()
{
RealSubject = new RealSubject();
}
public override void Request()
{
if (RealSubject == null)
RealSubject = new RealSubject();
RealSubject.Request();
}
}
}
4,代理模式的简单的应用
namespace ProxyMosdeExample
{
interface IGiveGift
{
void GiveChoco();
void GiveFlower();
void GiveOther();
}
public class Pursuit : IGiveGift
{
private SchoolGirl SchoolGirl;
public Pursuit(SchoolGirl schoolGirl)
{
this.SchoolGirl = schoolGirl;
}
public void GiveChoco()
{
}
public void GiveFlower()
{
}
public void GiveOther()
{
}
}
public class Proxy : IGiveGift
{
private Pursuit Pursuit;
public Proxy(SchoolGirl schoolGirl)
{
Pursuit = new Pursuit(schoolGirl);
}
public void GiveChoco()
{
Pursuit.GiveChoco();
}
public void GiveFlower()
{
Pursuit.GiveFlower();
}
public void GiveOther()
{
Pursuit.GiveOther();
}
}
public class SchoolGirl
{
public string Name;
}
}
// 使用
private void Start()
{
SchoolGirl schoolGirl = new SchoolGirl()
{
Name = "lili"
};
Proxy proxy = new Proxy(schoolGirl);
proxy.GiveOther();
proxy.GiveFlower();
proxy.GiveChoco();
}
5,关于代理模式的思考
应用的场景
1,远程代理,为一个对象在不同的地址空间提供局部代表,可以隐藏一个对象存在于不同的地址空间的事实
2,虚拟代理,根据需要创建开销很大的对象,通过它来存放需要实例化很长时间的对象
3,安全代理,用来控制真实对象的访问权限
4,智能索引,当调用真实的对象时,代理处理另外一些事
代理是在访问对象的时候,具有一定的间接性,代理其实就是真实对象的一种代表