点点滴滴


         从点开始绘制自己的程序人生
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Proxy

Posted on 2006-10-29 15:14  点点滴滴  阅读(138)  评论(0编辑  收藏  举报
// Proxy pattern -- Real World example

using System;

namespace DoFactory.GangOfFour.Proxy.RealWorld
{
  
  // Mainapp test application

  class MainApp
  {
    static void Main()
    {
      // Create math proxy
      MathProxy p = new MathProxy();

      // Do the math
      Console.WriteLine("4 + 2 = " + p.Add(4, 2));
      Console.WriteLine("4 - 2 = " + p.Sub(4, 2));
      Console.WriteLine("4 * 2 = " + p.Mul(4, 2));
      Console.WriteLine("4 / 2 = " + p.Div(4, 2));

      // Wait for user
      Console.Read();
    }
  }

  // "Subject"

  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);
  }

  // "RealSubject"

  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 Div(double x, double y){return x / y;}
  }

  // "Proxy Object"

  class MathProxy : IMath
  {
    Math math;

    public MathProxy()
    {
      math = new 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 Div(double x, double y)
    {
      return math.Div(x,y);
    }
  }
}