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.
     
  • 相关阅读:
    HTML语义化之常见模块
    取当前时间,格式为,yyyy-mm-dd hh:mm:ss
    利用JS 在网页上获取并显示当前日期 星期
    Javascript Math ceil()、floor()、round()三个函数的区别
    JS,JQUERY 常用笔记
    适配不同分辨率屏幕
    选取节点常用方法
    js控制使div自动适应居中
    点击jQuery Mobile的按钮改变颜色
    左侧固定宽度 右侧自适应
  • 原文地址:https://www.cnblogs.com/iiiDragon/p/3268444.html
Copyright © 2011-2022 走看看