一.适配器模式定义:
将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作。
二.适配器模式说明:
1.适配器模式分为类适配器模式和对象适配器模式两种。
2.生活中适配器最典型的例子就是手机充电器了,手机充电器做为适配器将家用电压转换成手机可以充电的电压。
3.实际开发中我们遇到两个类之间的接口不兼容又不想改动接口就可以使用适配器了。
三.设配器模式对象:
1:Target(目标抽象类):目标抽象类定义客户所需的接口,可以是一个抽象类或接口,也可以是具体类。
2:Adapter(适配器类):它可以调用另一个接口,作为一个转换器,对Adaptee和Target进行适配。它是适配器模式的核心。
3:Adaptee(适配者类):适配者即被适配的角色,它定义了一个已经存在的接口,这个接口需要适配,适配者类包好了客户希望的业务方法。
四.适配器的优缺点:
优点:
1.增加了类的透明性和复用性,将具体的业务实现过程封装在适配者类中,对客户端而言是透明的,并且提高了适配者的复用性。
2.有很好的灵活性和可扩展性,更换适配器就可以达到不同的效果,并且可以随时删除和增加适配器对原系统不影响。
缺点:
1.过多的使用适配器会让系统非常乱。
2.一次最多只能适配一个适配者类,而且目标抽象类只能为接口,不能为类,其使用有一定的局限性,不能将一个适配者类和他的子类同时适配到。
五.适配器模式在android中的应用:
适配器模式在Android中最典型和常用的就是做为ListView/RecyclerView的Adapter:
public class AdapterMain extends RecyclerView.Adapter<AdapterMain.VH> {
private List<MainInfo> mDatas;
public AdapterMain(List<MainInfo> data) {
this.mDatas = data;
}
public static class VH extends RecyclerView.ViewHolder{
public final TextView title;
public VH(View v) {
super(v);
title = v.findViewById(R.id.tv_item);
}
}
@Override
public VH onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.adapter_main,null);
return new VH(view);
}
@Override
public void onBindViewHolder(VH holder, int position) {
holder.title.setText(mDatas.get(position).getTitle());
}
@Override
public int getItemCount() {
return mDatas.size();
}
}
RecyclerView中需要传递一个Adapter进去然后通过重写Adapter中的onCreateViewHolder()
、onBindViewHolder()
、getItemCount()
等方法以及内部类ViewHolder
通过不同的Adapter实现不同的布局。