代码片-策略模式+工厂模式
通过策略类实现不同场景的策略处理,通过工厂模式创建不同的策略对象
1. 策略实现接口、策略实现类
1.1 策略接口
/**
* 策略接口
*/
public interface IWarnRule {
public void warn();
}
1.2 策略实现类
/**
* 防拆告警策略实现类
*/
public class AntiRemovalWarn implements IWarnRule {
private static final Logger log = LoggerFactory.getLogger(LongStaticWarn.class);
public AntiRemovalWarn() {
}
@Override
public void warn() {
// TODO 防拆策略具体实现
log.info("防拆告警");
}
}
/**
* 围栏告警策略实现类
*/
public class FenceWarn implements IWarnRule {
private static final Logger log = LoggerFactory.getLogger(LongStaticWarn.class);
public FenceWarn() {
}
@Override
public void warn() {
// TODO 围栏告警策略具体实现
log.info("围栏告警");
}
}
/**
* sos告警策略实现类
*/
public class SosWarn implements IWarnRule {
private static final Logger log = LoggerFactory.getLogger(LongStaticWarn.class);
public SosWarn() {
}
@Override
public void warn() {
// TODO sos告警策略具体实现
log.info("sos告警");
}
}
2. 工厂类
/**
* 告警工厂
*/
public class WarnFactory {
public static IWarnRule getSosWarn(Position tag, LocUwbUser uwbUser) {
return new SosWarn(tag, uwbUser);
}
public static IWarnRule getAntiRemovalWarn(Position tag, LocUwbUser uwbUser) {
return new AntiRemovalWarn(tag, uwbUser);
}
public static IWarnRule getFenceWarn(Position tag, LocUwbUser uwbUser) {
return new FenceWarn(tag, uwbUser);
}
}
3. 业务调用
/* SOS告警 */
IWarnRule sosWarn = null;
if (type == 1) {
sosWarn = WarnFactory.getSosWarn();/* sos告警 */
} else if (type == 2) {
sosWarn = WarnFactory.getAntiRemovalWarn();/* 防拆告警 */
} else {
sosWarn = WarnFactory.getFenceWarn();/* 围栏告警 */
}
sosWarn.warn();

浙公网安备 33010602011771号