package com.sandu.ximon.admin.manager.iot.frame; import com.sandu.ximon.admin.manager.iot.frame.inner.IRequestInnerFrame; import com.sandu.ximon.admin.manager.iot.rrpc.enums.FunctionCodeEnum; /** * @author chenjiantian * @date 2021/12/6 17:02 * 构建一个请求帧 */ public class FrameBuilder { private IRequestFrame iRequestFrame; private IRequestInnerFrame innerFrame; private String functionCode; private String orderType; private FrameBuilder(String functionCode) { this.functionCode = functionCode; } public static FrameBuilder builderA1() { return new FrameBuilder(FunctionCodeEnum.MAIN_BOARD_CONFIG.getCode()); } public static FrameBuilder builderA2() { return new FrameBuilder(FunctionCodeEnum.MAIN_BOARD_CONTROL.getCode()); } public static FrameBuilder builderA5() { return new FrameBuilder(FunctionCodeEnum.DATA_TRANSPORT_DATA.getCode()); } public FrameBuilder orderType(String orderType) { this.orderType = orderType; return this; } public FrameBuilder innerFrame(IRequestInnerFrame innerFrame) { this.innerFrame = innerFrame; return this; } public IRequestFrame build() { if (orderType == null || innerFrame == null) { throw new RuntimeException("参数不能为空"); } if (FunctionCodeEnum.MAIN_BOARD_CONFIG.getCode().equals(functionCode)) { iRequestFrame = new A1Frame(orderType, innerFrame); } else if (FunctionCodeEnum.MAIN_BOARD_CONTROL.getCode().equals(functionCode)) { iRequestFrame = new A2Frame(orderType, innerFrame); } else if (FunctionCodeEnum.DATA_TRANSPORT_DATA.getCode().equals(functionCode)) { iRequestFrame = new A5Frame(orderType, innerFrame); } else { throw new RuntimeException("找不到符合条件的请求帧"); } return iRequestFrame; } }