文档章节

适配器(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
宝山
程序员
设计模式——适配器模式(adpter模式)

适配器模式:按照字面理解可以理解为要适应要配合才能一起很好的工作。 专业定义:把一个类的API转换成用户期望的另一种API,让原本不能在一起工作的类能够在一起工作。如果理解起来不是很明...

姬鑫
2015/05/16
0
0
3、适配器模式

定义: 将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。 角色: 目标角色(Target):就是所期待得到的接口,也就是这...

晚天吹凉风
02/23
0
0
Happy 设计模式之适配器模式(JAVA)

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

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

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

Idea
01/20
0
0
【设计模式】适配器模式 Adapter Parttern

适配器模式在软件开发界使用及其广泛,在工业界,现实中也是屡见不鲜。比如手机充电器,笔记本充电器,广播接收器,电视接收器等等。都是适配器。 适配器主要作用是让本来不兼容的两个事物兼...

风之源
08/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Vue学习资料

一直以为Vue是依赖nodejs的。 作为前端也可以耦合性就很低了。 //npm包管理器 进行管理npm install vue//初始化一个项目vue init//本地调试npm run dev//编译完成 ...

大灰狼wow
27分钟前
1
0
fullcalendar重新渲染

uiCalendarConfig.calendars.lesson_calendar.fullCalendar('removeEvents');var ym = uiCalendarConfig.calendars.lesson_calendar.fullCalendar('getView').title;$scope.get_lesson(y......

人来疯啊
31分钟前
1
0
多渠道打包总结

https://www.jianshu.com/p/2130db7584c8 https://blog.csdn.net/u011153817/article/details/50772496...

塔塔米
40分钟前
1
0
android -------- Data Binding的使用 ( 六) 自定义属性

今天来说说DataBinding在自定义属性的使用 默认的android命名空间下,我们会发现并不是所有的属性都能直接通过data binding进行设置,比如margin,padding,还有自定义View的各种属性。 默认...

切切歆语
46分钟前
1
0
收邮件 下载附件

uses IdMessage, IdMessageParts, IdAttachment, IdGlobalProtocols, ...;procedure SaveAttachmentsFromFile(FileName: String)var IdMessage: TIdMessage; MsgPart: Ti......

vga
52分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部