zoukankan      html  css  js  c++  java
  • Design Pattern ->Adaptor

    Layering & Contract Philosophy With additional indirection

    Adaptee object just is as a member. Adaptee object just relies on Adapter object.

    class CAdaptee
    {
          public: void theExistingAndIncompatibleMethod(){ … } ;
    }
    class CTarget
    {
         public: virtual void theNewMethod() = 0;
    }
    
    class CAdapter: public CTarget, CAdaptee
    {
        public: void theNewMethod()
            { 
                  this->theExistingAndIncompatibleMethod(); 
            };
    }
    
    class CAdapter: public CTarget
    {
       public: void theNewMethod() 
       { 
           CAdaptee object;    
           object.theExistingAndIncompatibleMethod();
        };
    }
    class client
    {
        public: void operation() 
           { 
           CTarget *pTarget = new CAdapter; pTarget->theNewMethod();}
    }
    
    

    Applicability

    Use the Adapter pattern when

    • you want to use an existing class having a incompatible method with the new interface from the one you want to use, and its interface does not match the one you need. You want to create a reusable class that cooperates with unrelated or unforeseen classes, that is, classes that don't necessarily have compatible interfaces.
    • (object adapter only) you need to use several existing subclasses, but it's impractical to adapt their interface by subclassing/making as subclass every one. An object adapter can adapt the interface of its parent class.

    Participants

    • Target (Shape): defines the domain-specific interface that Client uses.
    • Client (DrawingEditor): collaborates with objects conforming to the Target interface.
    • Adaptee (TextView): defines an existing interface that needs adapting.
    • Adapter (TextShape): adapt the interface of Adaptee to the Target interface.

    Collaborations

    • Clients call operations on an Adapter instance. In turn, the adapter calls Adaptee operations that carry out the request.
     
  • 相关阅读:
    Flex【原创】移动设备相册图片浏览功能
    Flex SharedObject
    Flex Mobile applicationDPI 自适应
    Flex4.6【原创】移动设备拖曳、缩放、旋转手势并用(避免冲突)
    Flex Copy & Clone
    FlashBuilder 无法调试问题
    Flex【原创】惯性定位效果
    C#播放声音的两个方法 + 流读写文件
    ArrayList
    HDOJ1724椭圆
  • 原文地址:https://www.cnblogs.com/iiiDragon/p/3268444.html
Copyright © 2011-2022 走看看