首页 > 其他分享 >设计模式 - 策略模式

设计模式 - 策略模式

时间:2024-04-08 18:12:33浏览次数:18  
标签:qzTimeList nodeMapper 策略 nodeId 模式 strategy Integer 设计模式 public

起初业务简单、随着业务增长所有相关业务代码处理逻辑 都放置同一个对象中,通过策略模式以不通分类实现具体业务

public interface IPlanVideoStrategy {
  String execute(Integer typeCode, Integer nodeId, List<String> qzTimeList);
}

public class PlanPlayBackContext {

  private IPlanVideoStrategy strategy;

  private SysNodeMapper nodeMapper;

       // 设置策略工厂并通过set构造注入bean
  public void setStrategy(IPlanVideoStrategy strategy) {
    this.strategy = strategy;
    if(strategy instanceof StartPlanVideoStrategy){
      ((StartPlanVideoStrategy) strategy).setNodeMapper(nodeMapper);
    } else if{

      ...

    }

 

  }

      // 构造器

  public PlanPlayBackContext(SysNodeMapper nodeMapper) {
    this.nodeMapper = nodeMapper;
  }

  public String executeStrategy(Integer typeCode, Integer nodeId, List<String> qzTimeList) {
    return strategy.execute(typeCode, nodeId, qzTimeList);
  }
}

@Component
public class StartPlanVideoStrategy implements IPlanVideoStrategy {

  private SysNodeMapper nodeMapper;

  @Override
  public String execute(Integer typeCode, Integer nodeId, List<String> qzTimeList) {
    sout("hello");
  }
  public void setNodeMapper(SysNodeMapper nodeMapper) {
    this.nodeMapper = nodeMapper;
  }
}

// main
private String createPlanPlayBack(Integer nodeId, List<String> qzTimeList){
  SysNode sysNode = nodeMapper.selectById(nodeId);
  Integer typeCode = this.getTypeCode(sysNode.getStreamType(), 3);
  PlanPlayBackContext context = new PlanPlayBackContext(nodeMapper);
  context.setStrategy(new StartPlanVideoStrategy());
  return context.executeStrategy(typeCode, nodeId, qzTimeList);
}

标签:qzTimeList,nodeMapper,策略,nodeId,模式,strategy,Integer,设计模式,public
From: https://www.cnblogs.com/webster1/p/18121888

相关文章

  • 从根源解决问题:10个常见IT项目延期原因及其应对策略
    IT项目总会出现延期的10点原因:规划不善、范围蔓延、资源限制、沟通不畅、风险管理问题、任务依赖关系导致、任务复杂性、缺乏技能或培训、项目团队变动、外在因素。在项目管理这个多变的领域里,项目延期是一个没人喜欢却总是不请自来的问题。这些出乎意料的问题不仅会打乱我......
  • 沃连汇抖音本地生活盈利模式梳理报告
    一、项目名称抖音本地生活/抖音同城二、项目介绍上头支持“要坚持把发展经济的着力点放在实体经济上 ”,同时, 抖音与商家合作,大力发展“实体店+同城本地生活 ”,帮商家  获取同城流量、提高销售额。 目前,抖音同城有 5 类重度参与者:商家(以招商加盟为主)、实体店老......
  • HG6821M开启工厂模式
    本帖最后由小圆于2020-5-2219:16编辑开启不是永久的,是一次性的浏览器访问http://192.168.1.1/cgi-bin/telnetenable.cgi?telnetenable=1,然后打开终端telnet192.168.1.1使用用户名:root密码:hg2x0登陆登陆成功之后cd/usr/protest/mftouch/usr/protest/mf/factory_......
  • 为大家整理最全的24种设计模式详解,必收藏
    设计模式六大原则 单一职责原则一个方法尽可能做一件事情,一般来说不应该让一个方法承担多个职责。单一职责原则的英文名称是SingleResponsibilityPrinciple,简称是SRP。单一职责原则的定义是:应该有且仅有一个原因引起类的变更。SRP的原话解释是:Thereshouldneverbemo......
  • 【论文复现|智能算法改进】融合多策略的黄金正弦灰狼优化算法
    目录1.算法原理2.改进点3.结果展示4.参考文献1.算法原理【智能算法】灰狼算法(GWO)原理及实现2.改进点收敛因子非线性调整策略GWO算法的探索和开发能力很大程度上依赖于A的取值,当|A|>1时,灰狼群体通过扩大搜索范围继续搜寻猎物,即全局搜索;而当|A|<1......
  • 一个库帮你快速实现EF Core数据仓储模式
    https://www.cnblogs.com/Can-daydayup/p/18120034 思维导航前言EFCoreGenericRepository介绍值得推荐的.NETORM框架数据仓储(Repository)介绍类库特点项目源代码新建控制台应用相关类库安装新建UserInfo类新建数据库上下文类新建UserInfoService(包含常见CRUD)......
  • Chromium 自定义缓存策略
    目录CefRequestHandler在什么位置实现我如何将本地资源作为该请求资源返回呢?我怎么缓存网络资源呢,比如图片和视频?CefResourceHandler如何实现缓存图片和视频,缓存时间无限长,设置缓存路径?demoMyResourceHandler在哪里设置?ChromiumEmbeddedFramework(CEF)是一个开源库,用于......
  • 浅尝设计模式
    设计模式三大类创建型模式工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式结构型模式适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式行为型模式策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备......
  • 基于PI+重复控制的有源滤波器谐波抑制策略模型(Simulink仿真实现)
     ......
  • 宁波卓越绩效模式导入验收
    ......