《设计模式解析》第7章Adapter模式复习题
1、定义:Adapter 是将一个类的接口转化为用户希望的另一个接口。
2、意图:使得原本由于接口不兼容而不能一起工作的类能够一起工作。
3、效果:使得原有对象能够适应新的类结构,不受其接口的限制。
4、继承,多态。
5、保持多态性。将一个Adapter实现某个接口或者继承某个基类,将方法实现委托给adaptee进行,以达到能够进行多态调用的目的。
6、不用担心原有的类由于接口不同,而无法被另一个类使用。
7、对象Adapter和类Adapter。
对象Adapter使用委托,将请求转发给adaptee实现。
类Adapter使用多重继承,定义接口的类使用公开继承,要适配的类使用私有继承。定义接口的类的方法使用adaptee的方法来实现。
1、一些情况下,你需要实现某些功能,而你发现某个类A刚好能够提供你所需的功能,但由于该类的接口(接口IA)定义与你所需的接口(接口IB)不同(实现了不同的接口),因此,无法进行多态调用。使用Adapter模式,你使得类A可以满足接口IB,这样,用户就能够直接使用他的接口IB了。
2、由于XXCircle类的接口不符合用户需求,因此,Circle类将XXCircle对象嵌套其中,Circle类像是服务提供者,但实际上仅是将请求转发给XXCircle对象进行实现。因此,Circle类只是一个外包装。
3、意图不同:Adapter是为了使不同接口的类能够协同工作而出现的。
Façade模式是为了简化用户的接口而出现的。
设计原则不同:Adapter中,我们必须按照一个已经存在的接口进行设计。
Façade模式中,我们可以“随心所欲”设计自己的接口。
因此,一个是简化了接口,另一个是转化了一个已有的接口。
4、冰箱的插头是3孔的,但只有2孔插座。因此,3孔到2孔插头的“转换器”就应运而生。能够使得3孔的插头使用2孔的插座。
1、根据需要实现的效果而定。
当你需要为客户提供一个简单易用的接口来提供服务时,使用Facade。
当你需要为客户提供一个他所想要的实现了某个接口的类(或继承了某个基类的类),并复用另一个类的功能时,使用Adapter。
2、An adapter oradaptor is a person that adaptsor a devicethat converts attributes of one device or system to those of an otherwiseincompatible device or system.
适配器:将一个不合适的设备、设备的属性或者系统转化为合适的部件的设备。
这个名字很合适,跟好与他所实现的“将不符合用户需求的类的接口转化为用户所需要的接口”想匹配。