您的位置:首页 > 其它

【设计模式】之 Proxy 代理模式

2012-03-05 09:33 399 查看
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Remoting;

namespace DesignFactory.Proxy
{
/// <summary>
/// 代理模式
/// 利用远程代理模式提供对另一个应用程序AppDomain的对象进行访问控制
/// </summary>
class ProxyPattern
{
}

public interface IMath
{
double Add(double x, double y);
double Sub(double x, double y);
double Mul(double x, double y);
double Div(double x, double y);
}

class Math : MarshalByRefObject, IMath
{
public double Add(double x,double y){return x + y;}
public double Sub(double x, double y) { return x + y; }
public double Mul(double x, double y) { return x + y; }
public double Div(double x, double y) { return x + y; }
}

class MathProxy : IMath
{
Math math;
public MathProxy()
{
AppDomain ad = System.AppDomain.CreateDomain("MathDomain", null, null);
ObjectHandle o = ad.CreateInstance("Proxy_RealWord", "Math", false, System.Reflection.BindingFlags.CreateInstance, null, null, null, null, null);
math = (Math)o.Unwrap();
}

public double Add(double x,double y)
{
return math.Add(x, y);
}

public double Sub(double x, double y)
{
return math.Sub(x, y);
}

public double Mul(double x, double y)
{
return math.Mul(x, y);
}

public double Div(double x, double y)
{
return math.Div(x, y);
}
}

public class ProxyApp
{
public static void Main(string[] args)
{
MathProxy p = new MathProxy();
Console.WriteLine("4+2={0}",p.Add(4,2));
Console.WriteLine("4-2={0}", p.Sub(4, 2));
Console.WriteLine("4*2={0}", p.Mul(4, 2));
Console.WriteLine("4/2={0}", p.Div(4, 2));
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: