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、要使用适配器类,只需书写类继承适配器类即可;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/48052.html