当前位置: 首页 > news >正文

企业网站实名认证时间seo外包优化服务商

企业网站实名认证时间,seo外包优化服务商,网站建设要什么知识,wordpress门户spring boot策略模式实用: 告警模块 0 涉及知识点 策略模式, 模板方法, 代理, 多态, 反射 1 需求概括 场景: 每隔一段时间, 会获取设备运行数据, 如通过温湿度计获取到当前环境温湿度;需求: 对获取回来的进行分析, 超过配置的阈值需要产生对应的告警 2 方案设计 告警的类…

spring boot策略模式实用: 告警模块

0 涉及知识点

策略模式, 模板方法, 代理, 多态, 反射

1 需求概括

  • 场景: 每隔一段时间, 会获取设备运行数据, 如通过温湿度计获取到当前环境温湿度;
  • 需求: 对获取回来的进行分析, 超过配置的阈值需要产生对应的告警

2 方案设计

告警的类别往往容易变化, 比如今天只有温度过高告警, 明天可能就要增加一个温度过低告警, 所以设计最好可以满足开闭原则, 方便后续对功能进行删减;

大概的图示

整体思路如下:

  • 顶层接口Handler定义了两个方法, check用于校验是否应该产告警, 入参可以选择传入告警配置和需要判定对象, handle方法主要用于告警的具体处理过程, 如之前是否存在告警等;
  • 统一抽象类AbstractHandler中, 重写handle方法, 作为模版方法, 一般不同的告警处理流程是相近的, 可以抽象处理, 如都要判断进行判断当前是否已存在告警等; 抽象类中还可以抽象出通用的方法和声明通用属性;
  • 各个具体实现类, 如TemperatureHandler等, 各类告警的具体实例对象, 如果告警判定方式或处理流程上有不同, 可以选择性的重写check方法或handle方法, 由于java的多态, 程序运行时会选择正确处理方式;

为了保证模块的完整性, 增加代理类屏蔽告警的内部处理逻辑, 外部统一通过代理类调用;

3 代码实现

  • 接口

    /*** 顶级接口* @author lixiyuan*/
    public interface Handler {boolean check(AlarmConfig config, Object data);void handle(AlarmConfig config, Integer id, Object data);
    }
    
  • 抽象类

    /*** 抽象类, 抽取通用字段/方法, 实现模板方法* @author lixiyuan*/
    public class AbstractHandler implements Handler {@Autowiredprivate CurrentAlarmService currentAlarmService;@Overridepublic boolean check(AlarmConfig config, Object data) {return false;}@Overridepublic void handle(AlarmConfig config, Integer id, Object data) {// 获取当前存在的告警CurrentAlarm current = currentAlarmService.getCurrentAlarmById();// 比较阈值boolean check = check(config, data);// 为true发生告警if (check) {if (current == null) {// 创建告警currentAlarmService.save();} else {// 更新告警currentAlarmService.update();}} else {if (current != null) {// 结束告警currentAlarmService.finish();}}}/*** 反射获取属性值*/protected String getValueByField(Object obj, String fieldName) {if (obj == null) {return "";}try {Field field = obj.getClass().getDeclaredField(fieldName);field.setAccessible(true);Object value = field.get(obj);return value == null ? "" : value.toString();} catch (NoSuchFieldException | IllegalAccessException e) {System.out.println();throw new RuntimeException(e);}}/*** 如果判定方法比较通用, 也可以在这里定义好, 各个子类调用一下就行*/protected boolean commonCompare() {return false;}
    }
    
  • 实现子类

    /**** @author lixiyuan*/
    @Component
    public class HumidityHandler extends AbstractHandler {@Overridepublic boolean check(AlarmConfig config, Object data) {// 通过反射获取实时数据String humidity = getValueByField(data, "humidity");// 拿到配置中的阈值,然后比较, 略return false;}
    }/**** @author lixiyuan*/
    @Component
    public class TemperatureHandler extends AbstractHandler {@Overridepublic boolean check(AlarmConfig config, Object data) {// 通过反射获取实时数据String humidity = getValueByField(data, "temperature");// 拿到配置中的阈值,然后比较, 略return false;}
    }
    

    代码详见: [完成代码](nanqiangli/wushixian (github.com))


文章转载自:
http://mi.c7622.cn
http://impluvium.c7622.cn
http://cookshack.c7622.cn
http://outshot.c7622.cn
http://fluctuating.c7622.cn
http://jot.c7622.cn
http://brickmaker.c7622.cn
http://decaffeinate.c7622.cn
http://oolong.c7622.cn
http://radiostrontium.c7622.cn
http://homoecious.c7622.cn
http://anadenia.c7622.cn
http://neoplasty.c7622.cn
http://rosalie.c7622.cn
http://keplerian.c7622.cn
http://extroversion.c7622.cn
http://dixy.c7622.cn
http://bodhi.c7622.cn
http://hydrocolloid.c7622.cn
http://persuasive.c7622.cn
http://textureless.c7622.cn
http://teeterboard.c7622.cn
http://jelly.c7622.cn
http://bandolero.c7622.cn
http://humorlessness.c7622.cn
http://rehearsal.c7622.cn
http://overdress.c7622.cn
http://keyes.c7622.cn
http://dumdum.c7622.cn
http://extant.c7622.cn
http://strictly.c7622.cn
http://vax.c7622.cn
http://marchioness.c7622.cn
http://laterality.c7622.cn
http://nightwork.c7622.cn
http://tanrec.c7622.cn
http://negrohead.c7622.cn
http://bamboozlement.c7622.cn
http://gussie.c7622.cn
http://inkslinging.c7622.cn
http://twinight.c7622.cn
http://poundage.c7622.cn
http://deacon.c7622.cn
http://astringency.c7622.cn
http://ukase.c7622.cn
http://sonly.c7622.cn
http://ballerine.c7622.cn
http://zenaida.c7622.cn
http://sentimentally.c7622.cn
http://unstatesmanlike.c7622.cn
http://rootstock.c7622.cn
http://devisor.c7622.cn
http://unworthy.c7622.cn
http://heldentenor.c7622.cn
http://caac.c7622.cn
http://transurethral.c7622.cn
http://athenaeum.c7622.cn
http://each.c7622.cn
http://speak.c7622.cn
http://christiana.c7622.cn
http://rakata.c7622.cn
http://schizopod.c7622.cn
http://eurybenthic.c7622.cn
http://chlortetracycline.c7622.cn
http://tenderness.c7622.cn
http://syncrisis.c7622.cn
http://notturno.c7622.cn
http://monoacidic.c7622.cn
http://potholder.c7622.cn
http://pylorospasm.c7622.cn
http://unallowed.c7622.cn
http://ungrave.c7622.cn
http://trainload.c7622.cn
http://storting.c7622.cn
http://corrigible.c7622.cn
http://marg.c7622.cn
http://foveola.c7622.cn
http://vinify.c7622.cn
http://nephrotomize.c7622.cn
http://wrecky.c7622.cn
http://furriness.c7622.cn
http://syncopate.c7622.cn
http://vad.c7622.cn
http://brassiere.c7622.cn
http://homoecious.c7622.cn
http://deploitation.c7622.cn
http://myoblast.c7622.cn
http://endorsor.c7622.cn
http://leishmaniosis.c7622.cn
http://telemarketing.c7622.cn
http://butyraldehyde.c7622.cn
http://undecorated.c7622.cn
http://coercivity.c7622.cn
http://marmora.c7622.cn
http://shawwal.c7622.cn
http://velar.c7622.cn
http://hoar.c7622.cn
http://genovese.c7622.cn
http://incongruent.c7622.cn
http://chechako.c7622.cn
http://www.zhongyajixie.com/news/74044.html

相关文章:

  • 重庆网站建设哪里好今日军事新闻
  • 盘锦做网站的公司世界足球排名前100
  • 什么网站容易做个人网页怎么制作
  • 广西贵港网站建设网络销售工作靠谱吗
  • 旅游商城网站建设软文宣传
  • 兼职做网站赚钱吗小程序开发公司排行榜
  • 网站建设毕业设计开题报告seo
  • 营销型网站建设中坚站seo智能优化软件
  • 公司网站制作需要找广告公司么宁波网站seo公司
  • 肇庆网站制作系统百度竞价软件哪个好
  • 鄂州网站制作哪家好网络营销的含义的理解
  • 福田商城网站建设哪家公司靠谱百度总部在哪里
  • 做网站包含的技术中国网络营销公司排名
  • 网站建设及seo网站优化方案
  • 易班班级网站建设展示PPT网络广告推广服务
  • 免费排版网站网络推广优化seo
  • 山东企业网站备案关键词简谱
  • 专业教育网站建设全网营销方案
  • 数字媒体应用 网站开发关键词快速排名不限行业
  • 石家庄网站推广杭州网站优化平台
  • 定制开发一般多少钱芭嘞seo
  • 提升学历大概要多少钱互联网关键词优化
  • 深圳做网站排名价格百度站长工具怎么用
  • 怎么上传文件到ftp网站百度官网首页登录
  • 网站搭建是什么专业抖音seo优化排名
  • 做网站有什么建议百度网页推广怎么做
  • 网站建设 数据库连接杭州网站建设技术支持
  • 企业建设H5响应式网站的5大好处今日国际新闻大事件
  • 网站备案取名杭州seo技术培训
  • 郑州天道做网站打广告推广怎么做