代码片-策略模式+工厂模式

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();

以上是关于代码片-策略模式+工厂模式的主要内容,如果未能解决你的问题,请参考以下文章

代码片-策略模式+工厂模式

代码片-策略模式+工厂模式

SpringBoot使用策略模式+工厂模式

| 啥是工厂模式和策略模式?

策略模式与简单工厂模式

浅谈简单工厂模式和策略模式