文档章节

适配器(Adaptor)设计模式

蔡蔡先生
 蔡蔡先生
发布于 2017/05/15 15:13
字数 835
阅读 15
收藏 0

1.1. 什么是适配器

生活中的适配器:

电源适配器:将原本不满足使用要求的220V交流电转换成符合使用要求的直流电;

调制解调器:将电信号和光信号之间相互转换;

适配器模式:

一种设计模式,解决的问题就是:

 将原来不符合使用要求的东西转换成符合使用要求的东西;

1.2. Java中的适配器

java中,根据转换对象的不同,可以将适配器分为三类:

类的适配;对象的适配;接口的适配;

需求:看下列程序,分别书写实现类满足User类的需求;

interface Inter{//接口
	public void method1();
	public void method2();
	public void method3();
	public void method4();
	public void method5();
}
class User{//用户类
	public static void test1(Inter i){
		i.method1();
		i.method2();
	}
	public static void test2(Inter i){
		i.method2();
	}
	public static void test3(Inter i){
		i.method4();
	}
}

问题:因为多个实现类中只使用了接口中的某几个方法,但是不得不实现接口中所有方法,造成方法的大量浪费

解决思路:

可以专门使用一个类来实现接口,然后让其他类都来继承这个实现类,在其他的继承的类中就只需要重写需要的功能,不需要写多个无用的方法;

使用适配器类对接口进行适配,具体的业务逻辑类(实现具体功能的类)就不需要直接和接口打交道,可以只关心具体的业务逻辑;

interface Inter{//接口
    public void method1();
    public void method2();
    public void method3();
    public void method4();
    public void method5();
}
class User{//用户类
    public static void test1(Inter i){
        i.method1();
        i.method2();
    }
    public static void test2(Inter i){
        i.method2();
    }
    public static void test3(Inter i){
        i.method4();
    }
}
/*
根据需求,需要写三个实现类,分别实现接口Inter,分别供User类的三个方法使用;
*/
//首先专门创建一个类,实现接口
//一般因为这个类,只是实现接口中的所有抽象函数,
//没有具体的有意义的功能,所以一般不允许创建这个类的对象;
//因为其他类还要继承它,又不想让它创建对象,所以需要声明为抽象类
abstract class Adaptor implements Inter{
    public void method1(){}
    public void method2(){}
    public void method3(){}
    public void method4(){}
    public void method5(){}
}
class InterImpl1  extends Adaptor{
    public void method1(){
        System.out.println("method1   实现1");
    }
    public void method2(){
        System.out.println("method2   实现1");
    }
}
class InterImpl2  extends Adaptor{
    public void method2(){
        System.out.println("method2   实现2");
    }
}
class InterImpl3  extends Adaptor{
    public void method4(){
        System.out.println("method4   实现3");
    }
}

1.3. 适配器小结

适配器的作用,就是适配、转换,将不符合使用要求的东西转换为符合使用要求的;

适配器设计模式,解决的是怎么将不符合使用要求的类、对象或接口转换为符合使用要求的;

根据适配的对象不同,可以将适配器分为类的适配、对象的适配和接口的适配;

接口的适配的步骤:

1、创建一个适配器类实现接口,在这个类中使用空实现实现接口中的所有抽象函数;

2、因为适配器类中的函数都是空实现的,创建该类的对象没有意义,所以要将适配器类定义为抽象类;

3、要使用适配器类,只需书写类继承适配器类即可;

© 著作权归作者所有

共有 人打赏支持
蔡蔡先生
粉丝 1
博文 9
码字总数 8848
作品 0
宝山
程序员
私信 提问
设计模式学习笔记十四:适配器模式、桥接模式与外观模式

1.适配器模式与桥接模式的区别和联系 适配器模式和桥接模式都是间接引用对象,因此可以使系统更灵活,在实现上都涉及从自身以外的一个接口向被引用的对象发出请求。 两种模式的区别在于使用场...

长平狐
2013/06/17
89
0
Happy 设计模式之适配器模式(JAVA)

设计模式-适配器模式 适配器模式定义 适配器模式,将一个类的的接口转换成客户或者产品希望的接口形式,就是原本不兼容或者甚至不相干的接口不能一起工作的接口一起工作,完成需求或者客户的...

豆芽菜橙
07/03
0
0
Java经典设计模式-结构型模式-适配器模式(Adapter)

适配器模式 适配器模式主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。 适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的...

Idea
01/20
0
0
GOF设计模式

GOF设计模式分三种类型:结构型、创建型和行为型,这三者类型其实对应着一个系统的三个阶段:设计阶段、创建阶段和运行阶段。 创建阶段 创建模式 工厂模式【Factory Pattern】 当你实例化一个...

myeanng
2016/09/08
6
2
学了那么多年设计模式依然不会用!那可真蠢!

什么是设计模式? 设计模式(Design Pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。 设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决...

GitChat技术杂谈
10/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

零距离接触阿里云时序时空数据库TSDB

概述 最近,Amazon新推出了完全托管的时间序列数据库Timestream,可见,各大厂商对未来时间序列数据库的重视与日俱增。 阿里云TSDB是阿里巴巴集团数据库事业部研发的一款高性能分布式时序时空...

阿里云云栖社区
16分钟前
0
0
OkHttpClient封装

import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.util.Map; import java.util.TreeMap; import java.util.Map.Entry; import o......

尘叙缘
17分钟前
1
0
零距离接触阿里云时序时空数据库TSDB

概述 最近,Amazon新推出了完全托管的时间序列数据库Timestream,可见,各大厂商对未来时间序列数据库的重视与日俱增。 阿里云TSDB是阿里巴巴集团数据库事业部研发的一款高性能分布式时序时空...

阿里云官方博客
18分钟前
0
0
centos 7 nginx_install.sh

#!/bin/bashset -eprintf "============开始安装nginx\n"printf "============输入nginx下载url,按Enter默认下载1.14.2版本\n"download_url='';while truedoread down...

偶遇一只小仙女
19分钟前
0
0
数据库高并发下乐观锁的原理

在高并发下,经常需要处理SELECT之后,在业务层处理逻辑,再执行UPDATE的情况。 若两个连接并发查询同一条数据,然后在执行一些逻辑判断或业务操作后,执行UPDATE,可能出现与预期不相符的结...

hansonwong
20分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部