安卓策略模式

最近遇到一个需求,开关门的动作,需要接入不同的硬件厂商。也就是一个开门的方法,每个厂商的实现方式都不同。这样就需要定义一个接口,根据不同的厂商调用不同的方法 ,每一种方法就是一种开门的策略,下面看具体实现:

1.首先定义获取门状态的接口。

public interface FuGuiDoorInterface {

    /**
     * 获取门状态
     * @param type 门号
     * @return 门状态
     */
    String getDoorState(String type);
}

 

public class FuGuiManager {
     /**
     * iot门的实例接口
     */
    private FuGuiDoorInterface mFuGuiDoorInterface;

    /**
     * 注册门的实例
     *
     * @param mFuGuiDoorInterface
     */
    public FuGuiManager registerIotDoorInterface(FuGuiDoorInterface mFuGuiDoorInterface) 
    {
        this.mFuGuiDoorInterface = mFuGuiDoorInterface;
        return fuGuiManager == null ? newInstance() : fuGuiManager;
    }

    /**
     * 获取iot注册门的实例
     *
     * @return
     */
    public FuGuiDoorInterface getmFuGuiDoorInterface() {
        return mFuGuiDoorInterface;
    }

    String state = getmFuGuiDoorInterface().getDoorState(num);
}

2。根据不同条件实施不同策略。 

if(FuGuiInfo.IOT_VERSION.equals(FuGuiInfo.IOT_V51)){
//门注册
FuGuiManager.newInstance().registerIotDoorInterface(new com.fugui.iot.signway.DoorManager());
}else if (FuGuiInfo.IOT_VERSION.equals(FuGuiInfo.IOT_V60)) {
 //门注册
FuGuiManager.newInstance().registerIotDoorInterface(new com.fugui.iot.qianhui.DoorManager());
 }

3.每种策略的具体实现。 

public class DoorManager implements FuGuiDoorInterface {

    @Override
    public String getDoorState(String type) {
        FuGuiInfo.checkLockTime = System.currentTimeMillis();
       
            if(GpioManager.getInstance().getLeftDoorStatus(0) == 0){
                Log.v("qhDoorManager", "左门状态:关");
                FuGuiInfo.checkLockTime = System.currentTimeMillis();
                FuGuiInfo.setLeftDoorStatus(FuGuiInfo.DOOR_CLOSE);
                return FuGuiInfo.DOOR_CLOSE;
            }else {
                Log.v("qhDoorManager", "左门状态:开");
                FuGuiInfo.checkLockTime = System.currentTimeMillis();
                FuGuiInfo.setLeftDoorStatus(FuGuiInfo.DOOR_OPEN);
                return FuGuiInfo.DOOR_OPEN;
            }
        
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值