首页 > 其他分享 >策略模式

策略模式

时间:2024-08-01 16:53:12浏览次数:12  
标签:getBillNumber handleService 策略 handlerMap Factory 模式 ImportDataHandler String

if条件的终结者,不同的条件调用不同的处理类进行处理;

1.定义一个顶层接口,继承InitializingBean接口,保证在容器启动时将实现该接口的类实例化交给容器管理;

public interface ImportDataHandler<T>  extends InitializingBean {
    /**
     * 处理导入数据
     *
     * @param bill
     * @return
     */
    BillDataDto handleImportData(BillDataDto bill);

    void handleDatas(List<T> datas);
  //处理类标记
    String getBillNumber();


    @Override
    default void afterPropertiesSet(){
        Factory.registerHandler(this);
    }

  //内部工厂类对实现实现类添加到hashMap中
    class Factory {

        private static Map<String, ImportDataHandler> handlerMap = new HashMap<>();

        private static void registerHandler(ImportDataHandler handleService) {
            if (handleService != null) {
                handlerMap.putIfAbsent(handleService.getBillNumber(), handleService);
            }
        }

        public static ImportDataHandler getHandler(String billNumber) {
            return handlerMap.get(billNumber);
        }
    }

}

 调用方通过String getBillNumber()方法获取标记,继而从handlerMap拿到具体对应的实现类处理对象

ImportDataHandler handler = ImportDataHandler.Factory.getHandler(pictx.getBillnum());

  然后进行后续操作。

 

标签:getBillNumber,handleService,策略,handlerMap,Factory,模式,ImportDataHandler,String
From: https://www.cnblogs.com/darkb4dawn/p/18336151

相关文章

  • 模板方法模式
    上层抽象类定义好操作的基本框架,一些特殊的子操作交给子类去实现,使得子类可以在不改变上层基类的情况下,可以定制操作的某一步骤。抽象类:模版方法:定义操作的骨架基本方法抽象方法:交给子类实现具体方法:基类自己实现,子类也可以进行覆盖(重写)具体实现类实现......
  • 单例模式
    在整个系统中,只能存在一个对象实例,也就是说只能new一次饿汉式:在系统启动后,就会实例化一个对象(不管用不用得到,我先买了再说)缺点:造成内存浪费(如果从来没有使用过)优点:不会造成线程安全的问题classEHPatternInstance1{privatefinalstaticEHPatternInstance1IN......
  • 适配器模式
    适配器模式(AdapterPattern)将某个类的接口转换成客户端期望的另一个接口表示,主要目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作适配器继承适配对象,并实现适配目标所有的方法 国标接口(适配目标)publicinterfaceNationalStandard{voiduse()......
  • Calico VXLAN 模式
    CalicoVxLAN模式一、环境信息主机IPubuntu172.16.94.141软件版本docker26.1.4helmv3.15.0-rc.2kind0.18.0clab0.54.2kubernetes1.23.4ubuntuosUbuntu20.04.6LTSkernel5.11.5内核升级文档二、安装服务kind配置文件......
  • 如何合理利用场外期权对冲策略
    【来源:期权圈,场外个股每日询价】在金融市场的复杂棋局中,场外期权作为一种灵活多变的对冲工具,为投资者提供了多种策略来应对市场的不确定性。以下是对这些策略可以助投资者更精准地把握其精髓:Delta中性对冲策略通过精细调整期权头寸的Delta值,Delta中性对冲策略使投资组合对......
  • Zabbix监控模式及proxy代理
    一、zabbix主动与被动监控模式被动模式和主动模式都是相对于agent客户端而言的主动模式:客户端主动将数据发给server或者proxy被动模式:server或者proxy主动去找客户端索要数据1.被动模式默认是被动模式被动模式是说zabbixagent被动的接受zabbixserver周期性发送......
  • 单例设计模式的懒汉式和饿汉式以及它们的区别
    单例模式:也叫单子模式,属于“创建模式”一个类只有一个实例,并且自行实例化并向整个系统提供这个实例,这个类称为单例类。单例类一个最重要的特点:类的构造方法是私有的。何时使用:系统全局有且只有一个实例。单例模式的懒汉式:publicclassSingle{//需要将变量定义成......
  • 从扫描的 pdf 中提取设计模式
    我有一份大约650页的扫描版pdf。每页都包含一些图案(花朵、几何图案等)。我的目标是从pdf中提取这些模式。供您参考,这是pdf中的一页我当前的解决方案涉及使用opencv检测轮廓并提取图案。但是,该解决方案并不能处理所有情况。该pdf每页包含不同数量的图像,并且......
  • kubernetes更改nodePort模式下的默认端口范围
    使用nodePort模式,官方默认范围为30000-32767,详见Service官方文档。NodePort类型如果将type字段设置为NodePort,则Kubernetes控制平面将在–service-node-port-range标志指定的范围内分配端口(默认值:30000-32767)。每个节点将那个端口(每个节点上的相同端口号)代理到您的服务......
  • 设计模式-适配器模式( Adapter Pattern)
    设计模式-适配器模式(AdapterPattern)  概要   记忆关键词:转换,兼容接口  定义:将一个类的接口转换成客户希望的另外一个接口,适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。  分析:在适配器模式中,Cilent调用Adapter以获得相应功能,Adapter扩......