码迷,mamicode.com
首页 > 移动开发 > 详细

Android设计模式(十四)--适配器模式

时间:2015-06-19 11:55:24      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:android   设计模式   listview   

悲剧面试题:

简单谈谈你对Android中的适配器模式;

Adapter有哪些Adapter?

画出Adapter 的类图;


只有面试的时候才知道自己能力如何;

只有面试的时候才能更清晰的知识自己哪些不足;

既然不足那就补上。


适配器模式:


1、定义:

将一个接口转化为客户希望的另外一个接口;


2、目的:

Adapter模式使得原本由于接口不兼容而不能一起工作的类可以一起工作了。


3、使用:

     3.1、两个类所做的事情相同或者是相似,但具有不通的接口使用时,当双方都不易于修改的时候,使用适配器模式;

     3.2、系统已经拥有的类,但是不符合需要;

     3.3、彼此没有特别的关联的类需要共同完成操作;


4、分类:

      4.1、类适配器;

      4.2、对象适配器;

在java 中类适配器的本质,就是使用的继承与多态;

类适配器用与单一的数据源,是由于java 的单继承模式造成的

对象适配器可以适配多个数据源,弥补类适配器的不足;但是需要避免数据源过多时造成的分支过多,结构不清晰的问题;


5、优点:

     5.1、复用性好:对于已有的类在不改变原有的结构情况下,更好的复用;

     5.2、拓展性:适配器中可以更好的拓展;


6、缺点:

     造成系统逻辑混乱,适配器模式在某种情况下说,是不得不使用的情况下才会使用;否则若是设计好的接口就不需要适配了!


7、描述对象适配器:

目标接口:

package com.example.demo.Adapter;
/**
 * 目标接口
 * @author qubian
 * @data 2015年6月19日
 * @email naibbian@163.com
 *
 */
public interface Target {
	
	public void function1();
	public void function2();
	
}

已经存在的数据类:

这个如果是抽象类,并且继承Target就算是一种缺省的适配器模式

package com.example.demo.Adapter;
/**
 * 已经存在的类
 * @author qubian
 * @data 2015年6月19日
 * @email naibbian@163.com
 *
 */
public class BaseAdapter {
	
	public void function1()
	{
		
	}
}

适配器:

package com.example.demo.Adapter;
/**
 * 适配器
 * @author qubian
 * @data 2015年6月19日
 * @email naibbian@163.com
 *
 */
public class Adapter extends BaseAdapter implements Target{

	@Override
	public void function2() {
		
	}

}




8、对象适配器:

目标对象:

package com.example.demo.Adapter.ObjAdapter;
/**
 * 目标对象
 * @author qubian
 * @data 2015年6月19日
 * @email naibbian@163.com
 *
 */
public class Obj {

	public void function1(){
		
	}

	public void function2()
	{
		
	}
}
package com.example.demo.Adapter.ObjAdapter;
/**
 * 目标对象
 * @author qubian
 * @data 2015年6月19日
 * @email naibbian@163.com
 *
 */
public class Obj2 {

	public void function3(){
		
	}

	public void function4()
	{
		
	}
}
适配器:

package com.example.demo.Adapter.ObjAdapter;

public class Adapter {

	private Obj obj;
	private Obj2 obj2;
	
	public Adapter(Obj obj)
	{
		this.obj=obj;
	}
	
	public void setObj2(Obj2 obj2) {
		this.obj2 = obj2;
	}

	public void function1(){
		this.obj.function1();
	}

	public void function3()
	{
		if (this.obj2!=null) {
			this.obj2.function3();
		}
	}
}


9、Android中的适配器:

在Android 中,我们所用到的ListView ,书写自己的Adapter,来适配视图,就是一种适配器模式。


抽象类BaseAdapter 实现了 ListAdapter 和 SpinnerAdapter 两个接口,这两个接口都继承自 Adapter 接口。


Adapter 的类图:


技术分享

简单的说:我们写的适配器(MyListAdapter) 就是正对目标接口(BaseAdpter)对数据源(ListView)进行兼容修饰;也是一种缺省的适配器模式;







Android设计模式(十四)--适配器模式

标签:android   设计模式   listview   

原文地址:http://blog.csdn.net/naibbian/article/details/46558567

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!