设计模式系列(七)适配器模式与Android中的ListView

27 篇文章 0 订阅
13 篇文章 0 订阅

 

一:适配器模式概念

建造者模式过完了,从今天开始过结构型模式

在我们的应用程序中我们可能需要将两个不同接口的类来进行通信,在不修改这两个的前提下我们可能会需要某个中间件来完成这个衔接的过程。这个中间件就是适配器。所谓适配器模式就是将一个类的接口,转换成客户期望的另一个接口。它可以让原本两个不兼容的接口能够无缝完成对接。

作为中间件的适配器将目标类和适配者解耦,增加了类的透明性和可复用性。

适配器模式(Adapter Pattern) :将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。

适配器模式包含如下角色

  • Target:目标抽象类
  • Adapter:适配器类
  • Adaptee:适配者类
  • Client:客户类

对象适配器

../_images/Adapter.jpg

类适配器:

../_images/Adapter_classModel.jpg

二:  适配器模式简单代码示例

示例代码:

public interface Target {
	void doSomeThing();
}
public class Adaptee {
	public void doAdapteeThing() {}
}

类适配器

public class ClassAdapter extends Adaptee implements Target{
	@Override
	public void doSomeThing() {
		doAdapteeThing();
	}
}

对象适配器

public class ObjectAdapter implements Target{
	private Adaptee adaptee;
	public void setAdaptee(Adaptee adaptee) {
		this.adaptee = adaptee;
	}
	@Override
	public void doSomeThing() {
		adaptee.doAdapteeThing();
	}
}

三:接口适配器

除了上面的两种类适配器以及对象适配器外,还有一种接口适配器模式

这个比较简单,其实就是当一个接口要实现的内容太多的时候,给他来个wrapper,则子类只需要

实现这个wrapper就行了。

 

四:适配器模式与android中的listview,adapter

listview.setadapter  这个方法在开发中经常用,当然现在都换成了Recyclerview了

那么,这里的适配者模式是什么样的呢

首先:

1. adapter就是上面的结构中的Adapter

2.Target则是Adapter implements的接口(

public interface Adapter

里面包括getCount  getItem等一系列方法

3.那么这里的adaptee是什么呢?

其实就是adapter的数据,基本都是数据List

4.那么client是什么呢?

Client就是ListView本身

-------------------------------------------------

那么,这里的适配器模式是这样的,

ListView想访问 一个数组List<>中的内容,来展现出来,

但是List中的数据不能直接用,

所以这个时候就需要一个适配器Adapter,

Adapter则implement了一些列的target方法。

-----------------------------------------------------

另外,像普通的BaseAdapter其实用的是接口适配器的思想。BaseAapter默认实现了很多方法

那么子类需要实现的方法就少多了。

参考:

https://blog.csdn.net/qq_33768280/article/details/81067880

https://blog.csdn.net/bboyfeiyu/article/details/43950185

https://mp.weixin.qq.com/s?__biz=MzIyOTUzNDk0NQ==&mid=2247485229&idx=1&sn=5d55b832a6e019e6c2c472a49f861538&chksm=e8407aa3df37f3b50344fef1a7322658276f859ce156f40d5537d3c2671fc2a09dfe9bca6352&mpshare=1&scene=1&srcid=0610B71f68nyltKZGsSjYXul&key=dd5051400a9fb58f5e9746f8197057d553c4f985fdad6119f9afb4c1f26ceac5724bcaa3d623b27bb7729a0e9dd254ec74208ad4d4ba779cd1993d42909ba16313bba2f8552bd75155ac952d5cf8d7bb&ascene=1&uin=ODcwMjM5OTIx&devicetype=Windows+10&version=62060833&lang=zh_CN&pass_ticket=2SNwmF3KglaEII2WPTRKfM%2F1aaGosj3FTkmWvKmJ0c%2FJFewKAgdkECnKCCIwTrY4

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值