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.
     
  • 相关阅读:
    部署DNS正向解析-使域名和ip互相认识能够友好的访问
    部署NTP时间服务器-使时间同步
    Linux系统中常见的目录名称以及相应内容及用户管理相关文件
    systemctl常用操作
    部署NFS
    配置本地用户模式ftp服务 差个网上的
    js预解析
    jquery 三级联动
    js事件冒泡
    jquery 判断checkbox是否选中
  • 原文地址:https://www.cnblogs.com/iiiDragon/p/3268444.html
Copyright © 2011-2022 走看看