Java设计模式 适配器模式

适配器模式,参照RecyclerView的Adapter

作为两个不兼容的接口之间的桥梁

让两个没有关系的类联系到一起

抄袭龙哥卖鸡排的栗子😀:

我想吃鸡排和雪糕

重邮对面有一家正新鸡排还有一家蜜雪冰城(这是两个接口)

public interface JiPai {
    public void sellFood(String thing);
}
public interface Juice {
    public void sellIcecream(String icecream);
    public void sellMilk(String milk);
}

//鸡排店买鸡排(实体类)

蜜雪冰城买雪糕和奶茶(实体类)

package com.company.AdapterDemo;

/**
 * @author 珝珞
 * @date 2020/3/11
 * @project name redrock1
 */
public class MXBC implements Juice{
    @Override
    public void sellIcecream(String icecream) {
        System.out.println("卖雪糕");
    }

    @Override
    public void sellMilk(String milk) {
        System.out.println("卖奶茶");
    }
}

这时正新鸡排的店员告诉我,他可以帮我去买雪糕(适配器)

package com.company.AdapterDemo;

/**
 * @author 珝珞
 * @date 2020/3/11
 * @project name redrock1
 */
public class JPAdapter implements JiPai {
    Juice juice;

    public JPAdapter(String thing){
        if (thing.equalsIgnoreCase("雪糕")||thing.equalsIgnoreCase("奶茶")){
            juice = new MXBC();
        }
    }
    @Override
    public void sellFood(String thing) {
        if (thing.equalsIgnoreCase("雪糕")){
            juice.sellIcecream(thing);
        }else if (thing.equalsIgnoreCase("奶茶")){
            juice.sellMilk(thing);
        }
    }
}

然后他就去买鸡排和雪糕啦(实体类,实现了卖鸡排和卖雪糕)

public class ZXJP implements JiPai{
    JPAdapter jpAdapter;

    @Override
    public void sellFood(String thing) {
        //这是本来店里就卖的
        if (thing.equalsIgnoreCase("鸡排")){
            System.out.println("卖鸡排");
        }
        //这是蜜雪冰城卖的
        else if (thing.equalsIgnoreCase("雪糕")||thing.equalsIgnoreCase("奶茶")){
            jpAdapter = new JPAdapter(thing);
            jpAdapter.sellFood(thing);
        }else {
            System.out.println("没有这个卖哦");
        }
    }
}

然后我就吃到了鸡排和雪糕啦🤭(主函数)

public class Mine {
    public static void main(String[] args) {
        ZXJP zxjp = new ZXJP();

        zxjp.sellFood("鸡排");
        zxjp.sellFood("雪糕");
    }
}

下面是recycleview的例子:

package com.example.welcomedemo.adaptor;

import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import com.example.welcomedemo.R;

import java.util.List;

public class RecycleviewAdapter extends RecyclerView.Adapter<RecycleviewAdapter.ViewHolder> {

    private Context context;
    private List<String> data;
//初始化
    public RecycleviewAdapter(Context context, List<String> data){
        this.context = context;
        this.data = data;

    }
//这里是重写的三个方法
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.activity_recycleview_adapter,parent,false);
        return new ViewHolder(view);
    }
//设置每一行的点击事件
    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, final int position) {
        holder.name.setText(data.get(position));

        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.e("这里是点击每一行的响应",""+position);
            }
        });

    }
//返回列表的长度
    @Override
    public int getItemCount() {
        return data.size();
    }


    public class ViewHolder extends RecyclerView.ViewHolder{

        private TextView name;

        public ViewHolder(View view) {
            super(view);
            name = view.findViewById(R.id.name);

        }
    }
}

在activity中显示recycleview

 RecycleviewAdapter adapter = new RecycleviewAdapter(this,data);
// 给recyclerview设置布局管理器,否则不显示内容
 recyclerView.setLayoutManager(new LinearLayoutManager(this));
 recyclerView.setAdapter(adapter);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值