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

策略模式

时间:2023-06-02 15:14:52浏览次数:32  
标签:return 策略 fieldType 模式 FieldStrategyEnum com public String

参考网址:https://www.yuque.com/qinbinbin-nw5ci/kb/aqn1o8?#

@Service
public class BankCardForStrategyFactory implements ApplicationContextAware {
//创建一个map集合 ConcurrentHashMap保证线程是安全的
Map<String, StrategyBankCardRuteService> map = new ConcurrentHashMap<String, StrategyBankCardRuteService>();
/**
* 通过spring方式通过构造方法得到所有的接口实现类
* @param applicationContext
* @throws BeansException
*/
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
Map<String, StrategyBankCardRuteService> tempMap = applicationContext.getBeansOfType(StrategyBankCardRuteService.class);
tempMap.forEach((key, value) -> map.put(value.getBingBankCardKey(), value));
}

/**
* 通过规则名ruteName获取对应的实现策略
* @param key
* @return
*/
public StrategyBankCardRuteService getBankCardServiceFactory(String key) {
return map.containsKey(key) ? map.get(key): null;
}

}
package com.ruoyi.enums;

/**
* @PackageName:com.example.demo.enu
* @ClassName: FieldStrategyEnum
* @Author yms
* @Description: 枚举类
* @Date 2023/6/2 12:26
* @Version 1.0
*/
public enum FieldStrategyEnum {

ALIYUN("aliyun", "aliyun"),
CHECKBOX("checkbox", "checkbox"),
SELECT("select", "select"),
ZDYSELECT("zdyselect","zdyselect"),
TREE_SELECT("treeSelect", "treeselect"),
TTEXTAREA("textarea","textarea"),
OTHER("other", "other");

private String FieldType;
private String className;

private FieldStrategyEnum(String fieldType, String className) {
this.FieldType = fieldType;
this.className = className;
}

public String getFieldType() {
return FieldType;
}

public String getClassName() {
return className;
}

public static FieldStrategyEnum getByFieldType(String fieldType) {
for (FieldStrategyEnum fieldStrategyEnum : FieldStrategyEnum.values()) {
if (fieldStrategyEnum.getFieldType().equals(fieldType)) {
return fieldStrategyEnum;
}
}
return FieldStrategyEnum.OTHER;
}
public static boolean contains(String fieldType) {
for (FieldStrategyEnum d : FieldStrategyEnum.values()) {
if (d.getFieldType().equals(fieldType)) {
return true;
}
}
return false;
}
}
package com.ruoyi.strategy;

import com.ruoyi.vo.BankCardVo;

/**
* @PackageName:com.example.demo.factory
* @ClassName: StrategyBankCardRuteService
* @Author yms
* @Description: TODO
* @Date 2023/6/2 11:53
* @Version 1.0
*/
public interface StrategyBankCardRuteService {
/**
* @Author yms
* @Description 写一个绑卡策略服务
* @return
*/
String getBingBankCardKey();

/**
* 银行卡实名认证-银行卡实名验证-银行卡实名核验-银行卡四要素-银行卡四元素实名查询
* @return
*/
boolean bankCardAuthentication(BankCardVo bankCardVo);

}



标签:return,策略,fieldType,模式,FieldStrategyEnum,com,public,String
From: https://www.cnblogs.com/ymsblog/p/17451782.html

相关文章

  • 设计模式小记
    创建型模式(CreationalPatterns):工厂模式(FactoryPattern):通过工厂方法创建对象,隐藏具体实现细节,例如创建不同类型的按钮。//简单工厂模式classButtonFactory{createButton(type){switch(type){case'submit':returnnewSubmitButton();......
  • [ASP.NET MVC 小牛之路]01 - 理解MVC模式
    文章出处: https://www.cnblogs.com/willick/p/3195560.html理解一般意义上的MVC模式MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为以下三个基本部分:模型(Model):模型用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。“模型”有......
  • WindTerm GitHub 上 收获 6.6k 的 star。 多了自动补全命令,高速传输模式,上传下载速
    继 Tabby、Warp 后,今天再来给大家推荐一款终端神器——WindTerm,完全开源,在GitHub上已经收获6.6k的star。https://github.com/kingToolbox/WindTermWindTerm ,目前功能最全又最良心的SSH遠程終端連接器【開源地址】【下載鏈接】如何手动添加WindTerm快捷键能够自定义添......
  • 强化学习基础篇【1】:基础知识点、马尔科夫决策过程、蒙特卡洛策略梯度定理、REINFORCE
    强化学习基础篇【1】:基础知识点、马尔科夫决策过程、蒙特卡洛策略梯度定理、REINFORCE算法1.强化学习基础知识点智能体(agent):智能体是强化学习算法的主体,它能够根据经验做出主观判断并执行动作,是整个智能系统的核心。环境(environment):智能体以外的一切统称为环境,环境在与智能体......
  • 设计模式详解之抽象工厂模式--企业的运行模式
    前言本文主要讲述设计模式中的抽象工厂模式,文中使用通俗易懂的案例,使你更好的学习本章知识点并理解原理,做到有道无术。一.什么是抽象工厂模式抽象工厂是23种设计模式中创建型模式的一种,抽象工厂是由多个工厂组合而成。上一章我们提到的工厂模式只存在一个抽象角色,而抽象工厂是......
  • 深入学习RabbitMQ五种模式(一)
    1.安装erlang下载otp_win64_25.3.exehttps://www.erlang.org/downloadserlang安装完成,需要配置erlang环境变量ERLANG_HOME=E:\software\ErlangOTPPATH=%PATH%;%ERLANG_HOME%\bin;2.安装RabbitMQ下载rabbitmq-server-3.11.13.exehttps://www.rabbitmq.com/download.html进入安装......
  • golang实现设计模式之享元模式总结-代码、优缺点、适用场景
    享元模式是一种结构型的设计模式,通过共享细粒度对象实现对象的复用,从而达到减少对象创建与销毁,减少内存消耗,其本质是本质是缓存共享对象,降低内存消耗。享元模式的定义提出了两个要求,细粒度和共享对象。因为要求细粒度,所以不可避免地会使对象数量多且性质相近,此时我们就将这些对象......
  • [转]Visual Studio调试模式下添加命令行参数的方法
    在VS中向命令行添加参数,即向main()函数传递参数的方法: 右键单击:添加参数的工程-->属性-->配置属性-->调试,在右侧“命令参数”栏输入要添加的参数,各参数间用空格分离。例如:"-hide_banner" "Z:/media/subtitle/internal/divx/496x496.divx"则传递给main函数的argc为3,其中argv[0......
  • Java设计模式之单例模式
    一、何谓单例模式?单例模式,也叫单子模式,是一种常用的软件设计模式,属于创建型模式的一种。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一......
  • javascript设计模式-责任链
    责任链可以用来消除请求的发送者和接收者之间的耦合,这是通过实现一个由隐式地对请求进行处理的对象组成的链而做到的。链中的每个对象可以处理请求,也可以将其传给下一个对象。JS内部就使用了这种模式来处一事件捕获和冒泡问题。一般的结构如下:发送者知道链中的第一个接收者,它向这个......