代码改变世界

适配器模式

2010-08-26 22:12  Clingingboy  阅读(401)  评论(0编辑  收藏  举报

     适配器的意图是复用现有对象的功能. 这个模式用的还是比较多的.

// Existing way requests are implemented
  class Adaptee { 
    // Provide full precision
    public double SpecificRequest (double a, double b) {
      return a/b;
    }
  }
  
  // Required standard for requests
  interface ITarget {
    // Rough estimate required
    string Request (int i);
  }
  
  // Implementing the required standard via the Adaptee
  class Adapter : Adaptee, ITarget {
    public string Request (int i) {
      return "Rough estimate is " + (int) Math.Round(SpecificRequest (i,3));
    }
  }

重新定义了一个Request方法,然后调用基类方法SpecificRequest (也可以不用继承,从内部实例化对象也可以,具体可灵活运用)

static void  Main () {
    // Showing the Adapteee in stand-alone mode
   Adaptee first = new Adaptee();
   Console.Write("Before the new standard\nPrecise reading: ");
   Console.WriteLine(first.SpecificRequest(5,3));
    
   // What the client really wants
   ITarget second = new Adapter();
   Console.WriteLine("\nMoving to the new standard");
   Console.WriteLine(second.Request(5));
   Console.ReadKey();
 }

其实模式这东西,只要掌握了面向对象,模式就自然运用出来了