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

如果你是一个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:《非子墨》的空间

发布了0 篇原创文章 · 获赞 12 · 访问量 9万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览