用过苹果手机的人对这两样东西应该很熟悉
我们常常需要买多左边那个适配器来用,要不然以苹果这插头,没几个排插能插上的。
但有了这转换器的话,只要满足两端标准,就可以循环利用,很”环保”.
例如这样: — 或者这个:
想当年的巴别塔,如果有这样的做语言转换的翻译人,估计也建好了把。
起航
说这个转换器和排插,是因为今天要讲的适配器模型就和这个类似的道理 。
就让我们来举个例子看下怎么写适配器
假设: 小周要去米国读书,学校说你学费得给我交美元,没办法,在国外混,还是得准备点美国币美刀好,所以小周跑去银行用人民币换点美元,这样就能交学费上学啦。
这样我们就可以简单这样理解,人民币进银行 ,美元出。
有种白刀子进去红刀子出来的感觉。
所以我们这样设计下这个流程
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
,说的就是下面这种情况
@Override
public 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的,他只要求有统一的返回输出就好了。