设计模式系列3---搞转换的适配器模型
来源:互联网 发布:ascii码排序 c语言 编辑:程序博客网 时间:2024/06/16 07:31
用过苹果手机的人对这两样东西应该很熟悉
我们常常需要买多左边那个适配器来用,要不然以苹果这插头,没几个排插能插上的。
但有了这转换器的话,只要满足两端标准,就可以循环利用,很”环保”.
例如这样: — 或者这个:
想当年的巴别塔,如果有这样的做语言转换的翻译人,估计也建好了把。
起航
说这个转换器和排插,是因为今天要讲的适配器模型就和这个类似的道理 。
就让我们来举个例子看下怎么写适配器
假设: 小周要去米国读书,学校说你学费得给我交美元,没办法,在国外混,还是得准备点美国币美刀好,所以小周跑去银行用人民币换点美元,这样就能交学费上学啦。
这样我们就可以简单这样理解,人民币进银行 ,美元出。
有种白刀子进去红刀子出来的感觉。
所以我们这样设计下这个流程
public static void main(String[] args) { Rmb myRmb = new Rmb(600);//小周从外婆借来的600块人民币 BankOfChina bankOfChina = new BankOfChina();//当地有中国银行可以换美钞 Dollar myTuition = bank.changeRmb2Dollar(myRmb);//同银行换美刀;}
好了我们的流程大概就是这样,这样小周同学就成功的把人民币换成了美元,可以开开心心的背着书包去上学了。具体的类如下
public class BankOfChina implements Rmb2DollarInterface { @Override public Dollar changeRmb2Dollar(Rmb myRmb) { Dollar dollar = new Dollar(); dollar.setCount(myRmb.getCount() / 6); return dollar; }}public interface Rmb2DollarInterface { Dollar changeRmb2Dollar(Rmb rmb);}public class Rmb { private int count; public int getCount() { return count; } public void setCount(int count) { this.count = count; }} public class Dollar { private int count; public int getCount() { return count; } public void setCount(int count) { this.count = count; }}
是不是感觉还挺简单的样子呢?
在我们实际的开发中,这个“银行”做的就是进行不兼容的类似转换的场景,他熟悉两边的情况,而两边各不认识彼此的。
就像英国的老牌绅士们,两个绅士是不会主动打招呼的,除非有第三个人认识两人,才有可能发生联系。
在我们安卓的开发过程中,也经常遇到的最常见的当然就是适配器Adapter
啦。我们的ListView
要的是一个个的View
,但我们给Adapter
送的平常都是一堆的bean
,他负责去把各种bean
变成各种View
,说的就是下面这种情况
@Overridepublic View getView(int position, View convertView) { final ViewHolder holder; if (convertView == null) { holder = new ViewHolder(); convertView = mInflater.inflate(R.layout.list_item_weather, null); holder.tvTitle = (TextView) convertView.findViewById(R.id.dv_title_tv); holder.tvDesc = (TextView) convertView.findViewById(R.id.dv_desc_tv); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } DrawItem item = mList.get(position); holder.tvTitle.setText(item.getTitle()); holder.tvDesc.setText(item.getDesc()); return convertView;}
当然了,实际我们是可以扔不同的 bean的,他只要求有统一的返回输出就好了。
0 0
- 设计模式系列3---搞转换的适配器模型
- 设计模式系列3--适配器模式
- 适配器模式 - 设计模式系列
- 设计模式系列--适配器模式
- 设计模式系列:适配器模式
- PHP设计模式系列 - 适配器
- PHP设计模式系列 - 适配器
- PHP设计模式系列 - 适配器
- JAVA系列-设计模式-适配器模式
- Android设计模式系列-适配器模式
- Android设计模式系列-适配器模式
- Android设计模式系列--适配器模式
- Android设计模式系列-适配器模式
- Android设计模式系列-适配器模式
- Android设计模式系列-适配器模式
- Android设计模式系列-适配器模式
- Android设计模式系列-适配器模式
- Android设计模式系列-适配器模式
- 让IE6/IE7/IE8浏览器支持CSS3属性
- Junit断言的学习
- Android 自定义控件3
- 鼠标双击桌面上的快捷方式变成属性
- Launcher3 开机后应用数据的加载流程分析
- 设计模式系列3---搞转换的适配器模型
- js中的"=="和equals()以及is()三者的区别
- jquery中怎样把字符串解析成json【前端$.parseJSON(字符串)返回json对象详细看文章内容】
- hdu2037今年暑假不AC
- Akka并发编程——第二节:Actor模型(一)
- 属性动画实现卫星菜单
- 哈夫曼编译码器的实现 使用文件
- 杭电1285 确定比赛名次(拓扑排序)
- Java工程师成神之路