结构型模式的目的是通过组合类或对象产生更大结构,以适应更高层次的逻辑需求;
结构型模式共有7种:
■ 代理模式
■ 装饰模式
■ 适配器模式
■ 组合模式
■ 桥梁模式
■ 外观模式
■ 享元模式
一、适配器模式简介
适配器模式(Adapter Pattern)又叫做变压器模式,变压器把一种电压变换为另一种电压;
将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作;
image.png
# 适配器模式3个角色
■ 目标(Target)角色:该角色定义要转换成的目标接口;
■ 源(Adaptee)角色:需要被转换成目标角色的源角色;
■ 适配器(Adapter)角色:该角色是适配器模式的核心;
其职责是通过继承或是类关联的方式,将源角色转换为目标角色;
/**
* 源角色Adaptee类
*/
public class Adaptee {
public void specificRequest(){
System.out.println("原有逻辑处理");
}
}
/**
* 目标角色Target接口
*/
public interface Target {
void request();
}
/**
* 适配器角色Adapter
*/
public class Adapter extends Adaptee implements Target{
@Override
public void request() {
super.specificRequest();
}
}
/**
* 适配器模式应用
*/
public class ClientDemo {
public static void main(String[] args){
Target target = new Adapter();
target.request();
}
}
# 控制台输出:
原有逻辑处理
二、适配器模式的优点
■ 适配器模式可以让两个没有任何关系的类在一起运行;
■ 增加了类的透明性;
■ 提高类的复用度;
■ 增强代码的灵活性;
三、适配器模式的实例
image.png
/**
* 源角色(水饺)
*/
public class ShuiJiao {
public void makeShuiJiao(){
System.out.println("调制菜馅");
System.out.println("擀面皮");
System.out.println("包饺子");
}
}
/**
* 目标角色(混沌)
*/
public interface Hundun {
void makeHundun();
}
/**
* 适配器(水饺转换成馄饨)
*/
public class FoodAdapter extends ShuiJiao implements Hundun{
@Override
public void makeHundun() {
super.makeShuiJiao();
System.out.println("混沌和饺子一样是以面包馅的食品");
}
}
/**
* 适配器模式应用
*/
public class ClientDemo {
public static void main(String[] args){
Hundun hundun = new FoodAdapter();
hundun.makeHundun();
}
}
# 控制台输出:
调制菜馅
擀面皮
包饺子
混沌和饺子一样是以面包馅的食品
参考:
摘录 《设计模式(Java版)》韩敬海主编;(微信读书APP中有资源,可以直接阅读)
网友评论