代理模式

来源:互联网 发布:广告机发布软件 编辑:程序博客网 时间:2024/06/02 06:42


如果说这个计算程序部署在我们本地计算机上,使用就非常之简单了,我们也就不用去考虑Proxy模式了。但现在问题是这个Math类并没有部署在我们本地,而是部署在一台服务器上,也就是说Math类根本和我们的客户程序不在同一个地址空间之内,我们现在要面对的是跨越Internet这样一个网络障碍:


代理模式:代理类和被代理的类实现一个接口,代理类中定义一个被代理类的对象(个人描述,可能不准确)


using System;dusing System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 代理模式{    public interface IMath    {        double Add(double x, double y);         double Sub(double x, double y);         double Mul(double x, double y);        double Dev(double x, double y);    }    public class Math : 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 Dev(double x, double y) { return x / y; }    }    public class MathProxy    {        private Math math;        public MathProxy()        {            math = new Math();        }        // 以下的方法中,可能不仅仅是简单的调用Math类的方法              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 Dev(double x,double y) { return math.Dev(x, y); }        }        class Program    {        static void Main(string[] args)        {            MathProxy proxy = new MathProxy();            double result = proxy.Add(2, 3); Console.WriteLine(result);                   result = proxy.Sub(2, 3); Console.WriteLine(result);                   result = proxy.Mul(2, 3); Console.WriteLine(result);                   result = proxy.Dev(2, 3); Console.WriteLine(result);        }    }}


原创粉丝点击