代码片-策略模式+工厂模式
Posted niaonao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了代码片-策略模式+工厂模式相关的知识,希望对你有一定的参考价值。
通过策略类实现不同场景的策略处理,通过工厂模式创建不同的策略对象
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();
以上是关于代码片-策略模式+工厂模式的主要内容,如果未能解决你的问题,请参考以下文章