java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台(即 JavaEE(j2ee), JavaME(j2me), JavaSE(j2se))的总称。
这篇文章主要介绍了 java 设计模式之适配器模式 Adapter 的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
概述
将一个类的接口转换成用户希望的另外一个接口,Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。
两种实现方式
1. 类的适配器模式:
2. 对象的适配器模式:
类的适配器模式的 UML 图,如下:
类的适配器模式把适配的类的 API 转换成为目标类的 API。
上图设计的角色有:
目标角色(Target):这就是所期待得到的接口。
源角色(Adapee):现在需要适配的接口。
适配器角色(Adapter):是本模式的核心,适配器把源接口转换成目标接口。
代码示例:
- interface Target {
- void method1();
- void method2(); //期待得到该方法
- }
- //源类中不具备method2中的方法。
- class Adaptee {
- public void method1() {
- System.out.println("method1");
- }
- }
- class Adapter extends Adaptee implements Target {
- @Override public void method2() {
- System.out.println("this is target method");
- }
- }
- public class MainTest {
- public static void main(String arg[]) {
- Target target = new Adapter();
- target.method2();
- }
- }
对象的适配器模式的 UMl 图,如下:
核心思路与类的适配器模式相同,只是将 Adapter 类修改,不继承 Adaptee 类,而是持有 Adaptee 类的引用。代码如下:
- interface Target {
- void method1();
- void method2();
- }
- class Adaptee {
- public void method1() {
- System.out.println("method1");
- }
- }
- class Adapter implements Target {
- private Adaptee adaptee;
- public Adapter(Adaptee adaptee) {
- this.adaptee = adaptee;
- }
- @Override public void method2() {
- System.out.println("this is target method");
- }
- @Override public void method1() {
- // TODO Auto-generated method stub
- adaptee.method1();
- }
- }
- public class MainTest {
- public static void main(String arg[]) {
- Target target = new Adapter(new Adaptee());
- target.method2();
- }
- }
适配器模式的优缺点:
更好的复用性,更好的扩展性。系统需要使用现有的类,而此类的接口不符合系统的需要,那么通过适配器模式就可以让这些功能得到更好的复用。在实现适配器功能的时候,可以调用自己开发的功能,从而自然地扩展系统的功能。
缺点:过多的使用适配器,会让系统非常凌乱,不易整体把握。
来源: http://www.phperz.com/article/17/1215/358993.html