强大的回调callBack(各种类的各种数据随便传!面向接口编程)

1 篇文章 0 订阅
1 篇文章 0 订阅

最近有个需求,需要从顶层架构上封装多台厂家的打印机(称),实现更改xml配置就可切换不同的打印机,不需要更改代码!
以下代码体现了优秀的架构封装能力,多态的精彩演绎!
1面向接口编程:先定义接口,有哪些具体功能

public interface WeighInterface {

//    获取重量等状态
    void getWeigh(Context context,LvTaiScalePresenterCallback callback);
//    去皮
    void tare();
//    置零
    void zero();

     interface LvTaiScalePresenterCallback {
//        净重net,皮重pnet,状态statu(3表示稳定)
        void getData(int net, int pnet, int statu);
//欠载的时候返回true,只执行一次
        void isScaleCanUse(boolean isCan);
    }
}

2不同的具体某个厂家的称都实现顶层接口
厂家1

public class LvTaiWeigh implements WeighInterface {
    private ScalePresenter scalePresenter;

    @Override
    public void getWeigh(final Context context, final WeighInterface.LvTaiScalePresenterCallback callback) {
        scalePresenter = new ScalePresenter(context, new ScalePresenter.ScalePresenterCallback() {
            @Override
            public void getData(final int net, final int pnet, final int statu) {
                callback.getData(net, pnet, statu);

            }

            @Override
            public void isScaleCanUse(boolean isCan) {
                callback.isScaleCanUse(isCan);

            }
        });
    }


    @Override
    public void tare() {
        scalePresenter.tare();
    }

    @Override
    public void zero() {
        scalePresenter.zero();
    }
}

厂家2

public class LvTai1Weigh implements WeighInterface {
    @Override
    public void getWeigh(final Context context, final LvTaiScalePresenterCallback callback) {

    }

    @Override
    public void tare() {

    }

    @Override
    public void zero() {

    }
}

3构建工厂模式,通过工厂提供不同厂家的打印机

public class WeighFactory {
    public static WeighInterface getWeighName(String name){
        if(name.equals("lvtaiweigh")){
            return new LvTaiWeigh();
        }else {
            return new LvTai1Weigh();
        }

    }
}

以上内容可以打包成aar,供开发者调用
4根据不同型号打印机调用具体厂家的打印机

 WeighInterface mWeighInterface;
 mWeighInterface = WeighFactory.getWeighName("lvtaiweigh");
 mWeighInterface.getWeigh(this, new WeighInterface.LvTaiScalePresenterCallback() {
            @Override
            public void getData(final int net, final int pnet, final int statu) {
                Log.e("wy","27testaar净重:"+net+"皮重:"+pnet+"状态:"+statu);
            }

            @Override
            public void isScaleCanUse(final boolean isCan) {

            }
        });
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值