设计模式之“代理模式”
代理(Proxy)模式给某一个对象提供一个代理,并由代理对象控制对原对象的引用。
代理模式的英文叫做Proxy或Surrogate,中文都可译成"代理"。所谓代理,就是一个人或者一个机构代表另一个人或者另一个机构采取行动。在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
类图:
实例:
代理执行远程方法
public interface IMath { // Methods double Add(double x, double y); double Sub(double x, double y); } public class Math : MarshalByRefObject, IMath { // Methods public double Add(double x, double y) { return x + y; } public double Sub(double x, double y) { return x - y; } } public class MathProxy : IMath { // Fields Math math; // Constructors public MathProxy() { // Create Math instance in a different AppDomain AppDomain ad = System.AppDomain.CreateDomain("MathDomain", null, null); ObjectHandle o = ad.CreateInstance("TestDesgine", "TestDesgine.Math", false, System.Reflection.BindingFlags.CreateInstance, null, null, null, null, null); math = (Math)o.Unwrap(); } // Methods public double Add(double x, double y) { return math.Add(x, y); } public double Sub(double x, double y) { return math.Sub(x, y); } }