设计模式之适配器模式
Adapter(适配器模式)
一、适配器模式简介
适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。
这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。
核心:
-
1、将一个类的接口转换成客户希望的另外一个接口。
-
2、适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作
-
3、主要解决在软件系统中,常常要将一些"现存的对象"放到新的环境中,而新环境要求的接口是现对象不能满足的
二、适配器模式优缺点比较
优点:
- 1、可以让任何两个没有关联的类一起运行。
- 2、提高类的复用。
- 3、增加了类的透明度
- 4、灵活性更好
缺点:
- 1、过多地使用适配器,会让系统非常零乱,不易整体进行把握
- 2、由于 JAVA 至多继承一个类,所以至多只能适配一个适配者类,而且目标类必须是抽象类
使用场景:
- 1、旧系统改造和升级
- 2、JDBC、InputStreamReader、OutStreamWriter
注意事项:适配器不是在详细设计时添加的,而是解决正在服役的项目的问题。
三、实现UML类图
四、实现
步骤1:定义需要适配的类
public class Keyboard { public void handlerEvent() { System.out.println("Callback Keyboard::handlerEvent method"); } }
步骤2:定义适配器接口
public interface PeriDevice { void HandlerEvent(); }
步骤3:定义实现适配器接口的实体类
/** * 适配器模式 * 1.类适配器 (继承待适配对象,不够灵活 一般不采用) * 2.对象适配器(采用聚合的方式,将待适配对象作为类属性) */ public class KeyboardAdapter /*extends Keyboard */ implements PeriDevice { private Keyboard keyborad; //聚合方式定义 public KeyboardAdapter(Keyboard keyborad) { this.keyborad = keyborad; } @Override public void HandlerEvent() { keyborad.handlerEvent(); } }
步骤4:调用者调用适配器进行测试
public class AdapterDemo01 { public static void testHandler(PeriDevice pd) { pd.HandlerEvent(); } public static void main(String[] args) { Keyboard kb = new Keyboard();//待适配的对象 PeriDevice pd = new KeyboardAdapter(kb);//适配器 AdapterDemo01.testHandler(pd);//调用者通过适配器进行转接 } }
步骤5:运行程序,观察结果
Callback Keyboard::handlerEvent method
posted on 2020-03-29 17:53 VincentYew 阅读(89) 评论(0) 收藏 举报