如果你是一个Android程序员,那么你一定对适配器模式情有独钟。如果你还不知道 适配器模式为何物,你还陶醉在自己对AdapterView子类运用的有多熟的暗中自喜中,希望这篇文章能给你当头棒喝。人们常常举电脑适配器的例子作为 适配器模式的具象提现。但我更愿意用USB来举这个例子。当然USB接口也是电脑适配器的一部分。我们知道,不论是什么设备要连接上电脑,其实一根USB 连接线就够了。(如果你非要跟我深究什么打印机什么接口无法USB也没办法)。那么USB连接线就充当了适配器的效果。适配器的存在就是为了对接两个不同 的接口。那么什么叫做对接两个不同的接口呢?就跟现实里的一样。usb和设备的接口采用的是不同的标准,接口自然不一样。对接两个不同的接口的本质目的就 是让你的接口完成另外一个接口所完成的工作。适配器解释成翻译是再好不过的例子了。一个美国人和一个中国人。中间加一个翻译。美国人要和中国人通讯,传递 数据给翻译,翻译将数据再传递给中国人。中国人要和美国人通讯,传递数据给翻译,再由翻译传递给美国人。如果说美国人只和美国人说话的话,那么我们可以将 这时候的翻译看成美国人对象,而跟中国人说话的时候,我们可以将它看成一个中国人对象。适配器模式就是这样,完成两个不同接口的数据传递,或者说功能转 换。

在Android里面,Adapter模式被设计的淋漓尽致。尤其在 AdapterView的设计中,MVC的结构在Adapter的功能成为最耀眼的设计之一。数据和视图本身就是两个完全独立的系统,自然拥有两个完全不 同的系统接口。通过适配器能有效的将这两个接口拼接在一起。我们再次回到三国杀这款游戏。

我们知道,对于同一个用户来说,在不同的模式下是有着不同的样式展现,在等待模式下,你的用户在视图上的呈现可能是这个样子的:

而在游戏进行模式下,你的用户展现形式可能是这样的:

没错~这换一种说法就是MVC,但是我们如果用适配器的观点来看的话,我们定义一下英雄这个数据结构:

class Hero {

String name;

List <Image> images;//魔法列表

}

在等待模式视图下我们使用视图1

class View1 ;

战斗模式下我们使用视图2

class View2

View1和View2是完全不同的接口,而数据模型Hero所有的接口一定不会跟View相同,自然会使用适配器。这样数据就和视图解耦,当你要使用新的视图的时候,只需要定义新的适配器就可以。

--非子墨

微博账号: 非子墨
QQ:1025250620
CSDN:《非子墨》的空间

子墨对酒《三国杀》里论模式(三)适配器模式相关推荐

  1. 子墨对酒《三国杀》里论模式(一)工厂模式

    有人说模式会让代码变的优雅,也有人说模式会让你的代码更利于扩展.我个人觉得这些说 的都对.但是滥用模式一样会成为被人诟病的痛点.与其说面向对象语言考察的主要标准是语法,不如考察对模式的理解更加切合实际 ...

  2. 子墨对酒《三国杀》里论模式(肆)单例模式

    当设计模式的观点被众人所推崇的时候,单例模式似乎已经成了掌握设计模式时候要掌握的基础模式.当然我并不认为设计模式中有基础和非基础之分,我只觉得模式的应用有普遍和非普遍之别.单例模式的普遍并不体现在应用 ...

  3. 子墨对酒《三国杀》里论模式(二)门面模式

    学 习模式的人对门面模式都不会太陌生,如果说工厂模式是对对象的高层次抽象的话,那么门面模式就是对对象,就是一种更高层次的抽象.这么说可能不好理解,我 们举个很好理解的例子,我们知道cpu的目的是为了运 ...

  4. 子墨对酒《三国杀》里论模式(伍)模板方法

    如果你是J2EE的爱好者,相信你对模板方法并不陌生.是的,很多框架的设计都是基于模板方法.在我看来,我们也能用面向方面的概念来理解模板方法(当然这么说可能不合适).模板方法的就是将它的部分实现逻辑交给 ...

  5. 子墨庖丁-Gson的源码分析(1)-开篇

    因为工作的关系,使用到了Gson,先暂停了书写Proguard的文章,回到Gson的研究.当然也不会总是研究Gson,我会两个项目跳着来.完全按照自己的兴趣来.我个人觉得Gson是一个非常优秀的jso ...

  6. 子墨掩码到底是干嘛的?

    前言 基本上每台计算机的网卡配置里都有这么一项子墨掩码的配置,子墨掩码的值一般都是255.255.255.0 ,那么这个玩意到底是干嘛的呢?今天我们就来揭开它神秘的面纱! IP分配 没错 ,子墨掩码的 ...

  7. 子墨庖丁Android的ActionBar源代码分析 (一)实例化

    假设你从事过Androidclient开发,相信你对ActionBar这套框架并不陌生,或者说你并不了解它,可是你应该时不时的要跟它打交道.抛开ActionBar的实现不说,ActionBar实际上是 ...

  8. 子墨庖丁Android的ActionBar源码分析 (一)实例化

    如果你从事过Android客户端开发,相信你对ActionBar这套框架并不陌生,或者说你并不了解它,但是你应该时不时的要跟它打交道.抛开ActionBar的实现不说,ActionBar实际上是对An ...

  9. 鸿蒙抖音直播发言人是谁,抖音惊现“鲁班大师”,山村小杰万能子墨齐上阵,真实身份遭曝光...

    黄梅戏<夫妻双双把家还>,一直都深受广大民众的喜爱,这首歌更是传唱祖国大地.小编非常喜欢这首歌中的几句歌词:"你耕田来我织布,我挑水来你浇园."这句歌词,大概描绘出了很 ...

最新文章

  1. 记录一次MySQL两千万数据的大表优化解决过程,提供三种解决方案
  2. ubuntu apt-get停在了“configuring ttf-mscorefonts-installer”
  3. python中可选参数的特征_sklearn特征选择方法及参数
  4. Vue 全家桶 + Express 实现的博客(后端API全部自己手写)
  5. 定点化_mif文件生成
  6. 压缩软件自动化测试,FOR…IN…ZIP循环——自动化测试精解(14)
  7. 高德地图开启迪士尼赠票活动 带您开启迪士尼圆梦之旅
  8. 基于NSString处理文件的高级类
  9. python 网络渗透_python 网络编程(渗透与编程一)
  10. Linux命令行技巧
  11. React:组件的生命周期
  12. 想知道CSDN积分怎么获取谢谢啦 需要下载文件
  13. JSP中EL表达式和JSTL标签库的使用
  14. 用ANSYS画矩形_ANSYS软件使用的几点建议
  15. 如何快速构建社交APP中的语音房
  16. 如何用光盘映像文件重装服务器系统,光盘镜像文件怎么安装|教你安装光盘镜像方法...
  17. matlab模拟投硬币实验,利用几何画板模拟抛硬币实验
  18. 计算机可以进行磁盘管理,磁盘管理里可以看到盘 但是我的电脑里没有
  19. 【原创】ubuntu下收听香港电台和其他电台
  20. Matlab实现倒谱法 求 基音频率和共振峰

热门文章

  1. lableimg闪退_打标工具labelme或者labelimg遇到图片闪退的完美解决方案
  2. Apache Solr 中文分词
  3. 计算机丢失UxTheme无法修复,win7系统丢失uxtheme.dll怎么办,win7电脑uxtheme.dll丢失的解决方法...
  4. Shiro教程(七)Shiro Session共享配置以及实现
  5. C语言实现 输入密码显示星号******
  6. hdu-6034-Balala Power!
  7. 全国产品经理认证NPDP哪里比较不错?
  8. 当安全遇上AI 阿里聚安全算法挑战赛 队伍经验分享
  9. A 产品基础知识 mrd crd
  10. git——合并时的冲突解决