子墨对酒《三国杀》里论模式(三)适配器模式
如果你是一个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:《非子墨》的空间
子墨对酒《三国杀》里论模式(三)适配器模式相关推荐
- 子墨对酒《三国杀》里论模式(一)工厂模式
有人说模式会让代码变的优雅,也有人说模式会让你的代码更利于扩展.我个人觉得这些说 的都对.但是滥用模式一样会成为被人诟病的痛点.与其说面向对象语言考察的主要标准是语法,不如考察对模式的理解更加切合实际 ...
- 子墨对酒《三国杀》里论模式(肆)单例模式
当设计模式的观点被众人所推崇的时候,单例模式似乎已经成了掌握设计模式时候要掌握的基础模式.当然我并不认为设计模式中有基础和非基础之分,我只觉得模式的应用有普遍和非普遍之别.单例模式的普遍并不体现在应用 ...
- 子墨对酒《三国杀》里论模式(二)门面模式
学 习模式的人对门面模式都不会太陌生,如果说工厂模式是对对象的高层次抽象的话,那么门面模式就是对对象,就是一种更高层次的抽象.这么说可能不好理解,我 们举个很好理解的例子,我们知道cpu的目的是为了运 ...
- 子墨对酒《三国杀》里论模式(伍)模板方法
如果你是J2EE的爱好者,相信你对模板方法并不陌生.是的,很多框架的设计都是基于模板方法.在我看来,我们也能用面向方面的概念来理解模板方法(当然这么说可能不合适).模板方法的就是将它的部分实现逻辑交给 ...
- 子墨庖丁-Gson的源码分析(1)-开篇
因为工作的关系,使用到了Gson,先暂停了书写Proguard的文章,回到Gson的研究.当然也不会总是研究Gson,我会两个项目跳着来.完全按照自己的兴趣来.我个人觉得Gson是一个非常优秀的jso ...
- 子墨掩码到底是干嘛的?
前言 基本上每台计算机的网卡配置里都有这么一项子墨掩码的配置,子墨掩码的值一般都是255.255.255.0 ,那么这个玩意到底是干嘛的呢?今天我们就来揭开它神秘的面纱! IP分配 没错 ,子墨掩码的 ...
- 子墨庖丁Android的ActionBar源代码分析 (一)实例化
假设你从事过Androidclient开发,相信你对ActionBar这套框架并不陌生,或者说你并不了解它,可是你应该时不时的要跟它打交道.抛开ActionBar的实现不说,ActionBar实际上是 ...
- 子墨庖丁Android的ActionBar源码分析 (一)实例化
如果你从事过Android客户端开发,相信你对ActionBar这套框架并不陌生,或者说你并不了解它,但是你应该时不时的要跟它打交道.抛开ActionBar的实现不说,ActionBar实际上是对An ...
- 鸿蒙抖音直播发言人是谁,抖音惊现“鲁班大师”,山村小杰万能子墨齐上阵,真实身份遭曝光...
黄梅戏<夫妻双双把家还>,一直都深受广大民众的喜爱,这首歌更是传唱祖国大地.小编非常喜欢这首歌中的几句歌词:"你耕田来我织布,我挑水来你浇园."这句歌词,大概描绘出了很 ...
最新文章
- 记录一次MySQL两千万数据的大表优化解决过程,提供三种解决方案
- ubuntu apt-get停在了“configuring ttf-mscorefonts-installer”
- python中可选参数的特征_sklearn特征选择方法及参数
- Vue 全家桶 + Express 实现的博客(后端API全部自己手写)
- 定点化_mif文件生成
- 压缩软件自动化测试,FOR…IN…ZIP循环——自动化测试精解(14)
- 高德地图开启迪士尼赠票活动 带您开启迪士尼圆梦之旅
- 基于NSString处理文件的高级类
- python 网络渗透_python 网络编程(渗透与编程一)
- Linux命令行技巧
- React:组件的生命周期
- 想知道CSDN积分怎么获取谢谢啦 需要下载文件
- JSP中EL表达式和JSTL标签库的使用
- 用ANSYS画矩形_ANSYS软件使用的几点建议
- 如何快速构建社交APP中的语音房
- 如何用光盘映像文件重装服务器系统,光盘镜像文件怎么安装|教你安装光盘镜像方法...
- matlab模拟投硬币实验,利用几何画板模拟抛硬币实验
- 计算机可以进行磁盘管理,磁盘管理里可以看到盘 但是我的电脑里没有
- 【原创】ubuntu下收听香港电台和其他电台
- Matlab实现倒谱法 求 基音频率和共振峰
热门文章
- lableimg闪退_打标工具labelme或者labelimg遇到图片闪退的完美解决方案
- Apache Solr 中文分词
- 计算机丢失UxTheme无法修复,win7系统丢失uxtheme.dll怎么办,win7电脑uxtheme.dll丢失的解决方法...
- Shiro教程(七)Shiro Session共享配置以及实现
- C语言实现 输入密码显示星号******
- hdu-6034-Balala Power!
- 全国产品经理认证NPDP哪里比较不错?
- 当安全遇上AI 阿里聚安全算法挑战赛 队伍经验分享
- A 产品基础知识 mrd crd
- git——合并时的冲突解决