结构型模式
结构型模式主要涉及如何组合各种对象以便获得更好、更灵活的结构。虽然面向对象的继承机制提供了最基本的子类扩展父类的功能,但结构型模式不仅仅简单地使用继承,而更多地通过组合与运行期的动态组合来实现更灵活的功能。
包括的设计模式:适配器、桥接、组合、装饰器、外观、享元、代理
适配器模式(Adapter)
意图
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
别名
包装器:Wrapper
动机
有时,为复用而设计的工具箱类不能够被复用的原因仅仅是因为它的接口与专业应用领域所需要的接口不匹配。适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的清苦那个生活中用到适配器的例子很多,比如电源适配器,翻译官。
结构
类适配器
对象适配器(常用)
角色
Target
定义Client使用的与特定领域相关的接口(目标接口)。
Adaptee
定义了一个已经存在的接口,这个接口需要适配。
Adaptor
把Adaptee接口与目标接口进行适配。
效果
实现
//目标接口
package com.wlj.adapter;
/**
* @author wlj
* @Classname Target
* @Description 目标类
* @Date 6/14/2022 11:24 AM
*/
public class Target {
//客户需要调用的接口
public void request(){
System.out.println("普通请求");
}
}
//现存的
package com.wlj.adapter;
/**
* @author wlj
* @Classname Adaptee
* @Description 现存的类,需要适配
* @Date 6/14/2022 11:25 AM
*/
public class Adaptee {
//现有的特殊接口
public void specialRequest(){
System.out.println("特殊请求");
}
}
//适配器
package com.wlj.adapter;
/**
* @author wlj
* @Classname Adapter
* @Description 适配器
* @Date 6/14/2022 11:26 AM
*/
public class Adapter extends Target {
@Override
public void request(){
//适配现有接口
Adaptee adaptee = new Adaptee();
adaptee.specialRequest();
}
}
//测试
public class Client {
public static void main(String[] args) {
Target target = new Adapter();
target.request();
}
}
//结果
特殊接口