Android开发之适配器模式初探

我们在开发Android的时候经常通过Adapter把数据和UI对象连接在一起,spinner、ListView之类的控件都可以用适配器来自定义其组建,使其更加丰富。适配器模式是将两个不兼容的类纠合在一起使用,属于结构型,需要有Adaptee(被适配者)和Adaptor(适配器)两个身份。简单的来说,就是你有一个机器人是只会踢足球的,另一个机器人只会打篮球的,然后你想有让他既会踢足球又会打篮球,那他的芯片里要将这两种方法都集合在一起,可我们又不知道原来的踢足球和打篮球的方法是怎么写的,也不想改啊,也就是需要适配器模式,来把它们糅杂在一起啦。

适配器模式呢大致分为两种,一种是组合的方式对象适配器,另一种是继承的方式类适配器,其他还有各种衍生。

借助慕课网的教学ppt,我们来看一下什么是对象适配器

对象适配器就是把一个“被适配者”作为一个对象组合到适配器类中,以修改目标接口包装适配者,下面我们通过一个二相插头和三相插头的转换电流例子来看一下这种模式的运用。

我们先来看一下使用场景,我们带了一个笔记本和一个插座。

我们带的笔记本

public class NoteBook {

	private ThreePlugIf  plug;

	public NoteBook(ThreePlugIf plug){
		this.plug = plug;
	}

	//使用插座充电
	public void charge(){
		plug.powerWithThree();
	}

笔记本三相电流的插口

public interface ThreePlugIf {

	//使用三相电流供电
	public void powerWithThree();
}

我们带的插座

public class GBTwoPlug {

	//使用二相电流供电
	public void powerWithTwo(){
		System.out.println("使用二相电流供电");
	}
}

以上情况我们发现一个窘境,我们有一个笔记本必须使用三相电流,可我们只有二相电流插座,那怎么办呢,那我们就要一个转换器啦。

public class TwoPlugAdapter implements ThreePlugIf {

	private GBTwoPlug plug;

	public TwoPlugAdapter(GBTwoPlug plug){
		this.plug = plug;
	}
	@Override
	public void powerWithThree() {
		System.out.println("通过转化");
		plug.powerWithTwo();

	}

}

我们的适配器类继承了三项插座接口,实现了其输电方法,并将二相电流类作为参数对象传入。我们怎么使用这个适配器呢?

                 GBTwoPlug two =  new GBTwoPlug();
		ThreePlugIf three = new TwoPlugAdapter(two);
		NoteBook nb = new NoteBook(three);
		nb.charge();
		

答案就是我们用我们新的子类(适配器类)实例化父类(三相插座接口),新生成的对象可以调用子类的方法powerwithThree(),实现供电转化。

那么什么是类适配器呢?

类适配器模式就是通过多重继承不兼容接口,实现对目标接口的匹配,单一的唯某个类而实现适配的这样一种模式。

public class TwoPlugAdapterExtends extends GBTwoPlug implements ThreePlugIf {

	@Override
	public void powerWithThree() {
		System.out.print("借助继承适配器");
		this.powerWithTwo();

	}

}

看完适配器的两种模式,我们来对比一下

类适配器只能为单一的某个类而实现,复用性较差

对象适配器可以为不同的对象实现适配,使用性较强!

我们Android开发中使用的适配器是他们的一个变形,大家可以阅读下Android源代码研究下,万变不离其中嘛

Android开发之适配器模式初探

时间: 2024-08-04 22:58:15

Android开发之适配器模式初探的相关文章

Android开发之单例模式初探(源代码分享)

单例模式是什么呢?是Java23中模式之一,在Android开发中也有着广泛的运用,比如Calander类,在创建对象的时候并不是通过 new Calander而是Calander.getInstnce(),这就是单例模式的一种运用,应用的场合是什么呢?我们在很多时候有些对象只需要一个就够了,并不需要多个,就比如古代的皇帝,一山不容二虎,老虎多了只有坏处没有好处.它的作用就是保证整个应用程序中某个实例有且只有一个,one  is all! 单例模式呢分为两种一个是饿汉模式一个是懒汉模式,让我们先

Android开发 - ActivityLifecycleCallbacks用法初探

ActivityLifecycleCallbacks是什么? Application通过此接口提供了一套回调方法,用于让开发人员对Activity的生命周期事件进行集中处理. 为什么用ActivityLifecycleCallbacks? 以往若需监測Activity的生命周期事件代码,你可能是这样做的.重写每个Acivity的onResume(),然后作统计和处理: @Override protected void onResume() { super.onResume(); //TODO 处

Android开发之策略模式初探

策略模式主要定义一系列的算法,学过数据结构的朋友肯定知道,对于数组从大到小进行排序有着很多的算法,比如冒泡.交换.快速插入等等,策略模式就是把这些算法封装成一个个独立的类,方便使用时候进行任意的调用.这里以字符串替代为例, 有一个文件,我们需要读取后,希望替代其中相应的变量,然后输出.关于替代其中变量的方法可能有多种方法,这取决于用户的要求,所以我们要准备几套变量字符替代方案. 首先,我们建立一个抽象类RepTempRule 定义一些公用变量和方法: public abstract class

Android开发之工厂模式初探

工厂模式(Factory)是比较常见的一种模式我觉得也是一种非常容易理解的一种模式,举个简单的例子吧,我们小时候经常考试,每次最害怕的就是爸妈问考试试卷的分数,不同的分数我们的心情也是不一样的.那么我们就根据这个情况以工厂模式写一个Java程序. public class Factory { public static Student_test creator(String rank){ if(rank.equals("优秀")){ return new Student_Laugh()

Android开发环境搭建日记和嵌入式Android开发环境初探

原文出处:www.cnblogs.com/chsry 非常感谢博客园的各位,按照你们的博文,还有利用百度和谷歌逐渐建立了android的开发环境,只是给自己备份参考查看,看过的人可以忽略这篇文章. 本文章大部分参考了:http://www.cnblogs.com/zoupeiyang/p/4034517.html  ,添加了我搭建时候遇到的问题和自己的解决方案,也基本备份了我当时自己的设置,以备日后查看. 本教程将分为五个步骤来完成Android开发环境的部署. 第一步:安装JDK. 第二步:配

Android开发工程师,新长征路上的14项技能

导读: 你曾渴望回到宋朝吗? 或者什么朝,反正就是男耕女织的古代. 哦,那时的首都在汴梁(开封),房价想必没有这么高,工作?无非就是给你把锄头,去,种地去.夕阳西下了,麦子垛后,你和翠姑搂抱在一起,那时的你,生活的简单而美好. 看看现在的你,一个刚入门的安卓开发工程师,没有信用卡,没有她,没有24小时热水的家.你想念你的锄头和翠姑(或麦垛),可你回不去了,你现在手中的安卓手机,冰冷如铁,你不知道如何在这4寸屏的小东西上打出一片天地. 你不用感到不知所措和困惑,技术就是你安身立命的根本,当下,你的

Android开发工程师,前行路上的14项技能

导读: 你是否曾渴望回到宋朝? 或者什么朝,反正就是男耕女织的古代. 哦,那时的首都在汴梁(开封),房价想必没有现在这么高,工作?无非就是给你把锄头,去,种地去.夕阳西下了,麦子垛后,你和翠姑搂抱在一起,那时的你,生活的简单而美好. 看看现在的你,一个刚入门的安卓开发工程师,没有信用卡,没有她,没有24小时热水的家.你想念你的锄头和翠姑(或麦垛),可你回不去了.你握在手中的安卓手机,冰冷如铁,你不知道如何在这4寸屏的小东西上创出一片天地. 你不用感到不知所措和困惑,技术就是你安身立命的根本,当下

android开发零基础入门教程

最实用.最容易上手的android课程 很多java学习者都想尽快掌握android开发的流程!为此,我们推出了12小时系列课程,学习者只需要两天时间即可掌握android开发的基本知识,跨入android开发的大门,如想深入学习,请关注课程更新:授课时,我们也注重展示android开发中的实际技巧,课上代码都由老师一行一行实际敲出,真实展现了android开发中的细节. 在学习本课程时,你应该掌握基本java开发知识.数据库知识.XML技术等.这些技术我们再12小时学android课程中不再赘

Android开发:碎片Fragment完全解析fragment_main.xml/activity_main.xml

Android开发:碎片Fragment完全解析 为了让界面可以在平板上更好地展示,Android在3.0版本引入了Fragment(碎片)功能,它非常类似于Activity,可以像 Activity一样包含布局.Fragment通常是嵌套在Activity中使用的,现在想象这种场景:有两个 Fragment,Fragment 1包含了一个ListView,每行显示一本书的标题.Fragment 2包含了TextView和 ImageView,来显示书的详细内容和图片. AD:51CTO学院:I