7 the Adapter and Facade Patterns Being Adaptive

The Adapter Pattern's role is to convert one interface into another.

The Adapter Pattern converts the interface of a class into another interface the clients expect.Adapter lets classes work together that couldn't otherwise because of incompatible interfaces.

This acts to decouple the client from the implemented interface,and if we expect the inerface to change over time,the adapter encapsulates that change so that the client doesn't have to be modified each time it needs to operate against a different interface.



 

 

The Adapter Pattern is full of good OO design principles:check out the use of object composition to wrap the adaptee with an altered interface.This approach has the added advantage that we can use an adapter with any subclass of the adaptee.

Also check out how the pattern binds the client to an interface,not an implementating;we could use several adapters,each converting a different backend set of classes.Or,we could add new implementations after the fact,as long as they adhere to the Target interface.

 

 

There are actually tow kinds of adapters:obect adapters and class adapters(multiple inheritance to implement it).

 

class adapters:



 The only difference is that with class adapter we subclass the Target and the Adaptee,while with object datpter we use composition to pass requests to an Adaptee.

Obect adapters and class adapters use tow different means of adapting the adaptee(composition versuse inheritance).



 

 

 

Obect Adapter

Because I use composition I've got a leg up.I can not only adapt an adaptee class,but any of its subclasses.(因为组合采用接口,比如构造器中传入的是接口,那么所有实现了这个接口的类都可以使用该适配器)

Class Adapter

That's true,I do have trouble with that because I am committed to one specific adaptee class,but I have a huge advantage because I don't have to reimplement my entire adaptee.I can also override the behavior of my adaptee if I need to because I'm just subclassing.(另一个问题是adaptee应该是一早就存在的,你要使用适配器模式,是因为突然发现你现有的实现不能适应adaptee)

Object Adapter

In my part of the world,we like to use composition over inheritance;you may be saving a few lines of code,but all I'm doing is writing a little code to delegate to the adaptee.We like to keep things flexible.

Class Adapter

Flexible maybe,efficient?No.Using a class adapter there is just one of me,not an adapter and an adaptee.

Object Adapter

You're worried about one little object?You might be able to quickly override a method,but any behavior I add to my adapter code works with my adaptee class and all its subclasses.

Class Adapter

Yeah,but what if a subclass of adaptee adds some new behavior.Then what?

Object Adapter

Hey,come on,cut me a break,I just need to compose with the subclass to make that work.

Class Adapter

Sounds messy....

Object Adapter

You wanna see messy?Look in the mirror!

 

 

 

when a Decorator is involved there's going to be some new responsibilities or behaviors added to your design.

 

 

 

 a pattern that alters an interface,but for a different reason:to simplify the interface.

It's aptly named the Facade Pattern because this pattern hides all the complexity of one or more classes behind a clean,well-lit facade.

 

Decorator Doesn't alter the interface,but adds responsibility.

Adapter    Converts one interface to another

Facade     Makes an interface simpler

 

 



 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值