zoukankan      html  css  js  c++  java
  • adapterpluggabletheory.cs

      using System;
     
      // Adapter Pattern -  Pluggable                       Judith Bishop Aug 2006
      // Adapter can accept any number of pluggable adaptees and targets
      // and route the requests via a delegate, in some cases using the
        //  anonymous delegate construct
     
      // Existing way requests are implemented
      class Adaptee {
        public double Precise (double a, double b) {
          return a/b;
        }
      }
     
      // New standard for requests
      class Target  {
        public string Estimate (int i) {
          return "Estimate is " + (int) Math.Round(i/3.0);
        }
      }
     
      // Implementing new requests via old
      class Adapter : Adaptee {
        public Func <int,string> Request;
        
        // Different constructors for the   expected targets/adaptees
        public Adapter (Adaptee adaptee) {
          // Set the delegate to the new standard
          Request = delegate(int i) {
            return "Estimate based on precision is " + (int) Math.Round(Precise (i,3));
          };
        }
        
        public Adapter (Target target) {
          // Set the delegate to the existing standard
          Request = target.Estimate;
        }
      }
     
      class Client {
         static void  Main () {
           
           Adapter adapter1 = new Adapter (new Adaptee());
           Console.WriteLine(adapter1.Request(5));
           
           Adapter adapter2 = new Adapter (new Target());
           Console.WriteLine(adapter2.Request(5));
        }
      }
    /*Output
    Estimate based on precision is 2
    Estimate is 2
    */

  • 相关阅读:
    Attributes(特性)与 Properties(属性)的区别
    MFC Ribbon UI 弹出菜单实现分析
    汇编笔记(三)
    一道“简单”的难题
    汇编笔记(四)
    汇编笔记(二)
    汇编笔记(五)
    在XAML里绑定 ElementName RelativeSource 属性
    WPF combobox 解释RelativeSource
    存储过程事务 用事务点处理回滚实例
  • 原文地址:https://www.cnblogs.com/shihao/p/2499942.html
Copyright © 2011-2022 走看看