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.
 

 

转载于:https://www.cnblogs.com/iiiDragon/p/3268444.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值