首页 > 其他分享 >设计模式-工厂模式

设计模式-工厂模式

时间:2024-04-05 12:59:57浏览次数:17  
标签:Map 抽奖 class rule 工厂 RULE 模式 设计模式 public

作用:

提供一个接口,返回子对象

将bean注入工厂方式:

1.@Component +构造器:

AbstractLogicChain 实现ILogicChain接口

@Component("rule_blacklist")
public class BlackListLogicChain extends AbstractLogicChain

@Component("default")
public class DefaultLogicChain extends AbstractLogicChain
@Component("rule_weight")
public class RuleWeightLogicChain extends AbstractLogicChain

private final Map<String, ILogicChain> logicChainGroup;

protected IStrategyRepository repository;

public DefaultChainFactory(Map<String, ILogicChain> logicChainGroup, IStrategyRepository repository) { this.logicChainGroup = logicChainGroup; this.repository = repository; }

2.@Resource +map:

//伪代码

config类:

@Resource

BlackListLogicChain blackListLogicChain ;

@Resource

RuleWeightLogicChain ruleWeightLogicChain ;

map.put("rule_blacklist", blackListLogicChain)

factory工厂继承config

3.注解: 策略模式? 策略工厂!

自定义注解

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface LogicStrategy {
​
    DefaultLogicFactory.LogicModel logicMode();
​
}

每个子类加注解

@LogicStrategy(logicMode = DefaultLogicFactory.LogicModel.RULE_LOCK)
public class RuleLockLogicFilter implements ILogicFilter<RuleActionEntity.RaffleCenterEntity> {

@Service
public class DefaultLogicFactory {
​
//装配
    public Map<String, ILogicFilter<?>> logicFilterMap = new ConcurrentHashMap<>();
​
    public DefaultLogicFactory(List<ILogicFilter<?>> logicFilters) {
        logicFilters.forEach(logic -> {
            LogicStrategy strategy = AnnotationUtils.findAnnotation(logic.getClass(), LogicStrategy.class);
            if (null != strategy) {
                logicFilterMap.put(strategy.logicMode().getCode(), logic);
            }
        });
    }
​
    public <T extends RuleActionEntity.RaffleEntity> Map<String, ILogicFilter<T>> openLogicFilter() {
        return (Map<String, ILogicFilter<T>>) (Map<?, ?>) logicFilterMap;
    }
​
    @Getter
    @AllArgsConstructor
    public enum LogicModel {
​
        RULE_WIGHT("rule_weight", "【抽奖前规则】根据抽奖权重返回可抽奖范围KEY", "before"),
        RULE_BLACKLIST("rule_blacklist", "【抽奖前规则】黑名单规则过滤,命中黑名单则直接返回", "before"),
        RULE_LOCK("rule_lock", "【抽奖中规则】抽奖n次后,对应奖品可解锁抽奖", "center"),
        RULE_LUCK_AWARD("rule_luck_award", "【抽奖后规则】抽奖n次后,对应奖品可解锁抽奖", "after"),
        ;
​
        private final String code;
        private final String info;
        private final String type;
​
​
    }

和第一种方式差不多

标签:Map,抽奖,class,rule,工厂,RULE,模式,设计模式,public
From: https://blog.csdn.net/m0_75137040/article/details/137398200

相关文章

  • 设计模式总结-简单工厂模式
    简单工厂模式创建型模式创建型模式概述创建型模式种类简单工厂模式模式定义模式动机模式结构模式分析模式实例与解析实例一:简单电视机工厂实例二:权限管理模式优缺点简单工厂模式的优点简单工厂模式的缺点模式适用环境模式扩展小结创建型模式创建型模式概述创建......
  • Tomcat使用的设计模式
    目录门面模式(FacadePattern):观察者模式(ObserverPattern):工厂模式(FactoryPattern):策略模式(StrategyPattern):Tomcat中使用了多种设计模式,以下是主要设计模式:门面模式(FacadePattern):门面模式用于封装子系统的具体实现,为外部系统提供统一的外观类。在Tomcat中,门面模式的应......
  • 设计模式|状态机模式(State Machine Pattern)
    文章目录结构使用步骤示例使用状态机的场景常见面试题状态机模式(StateMachinePattern)是一种用于描述对象的行为软件设计模式,属于行为型设计模式。在状态机模式中,对象的行为取决于其内部状态,并且在不同的状态下,对象可能会有不同的行为。状态机模式通常涉及定义一组状......
  • 探索设计模式的魅力:揭秘B/S模式在AI大模型时代的蜕变与进化
    ​......
  • 【如今IP训练营】招募,复制我的赚钱模式,小白也能月入10万+
    标题小插曲:大家好,我是如今,【如今笔记】的主理人。做“IP训练营”,我现在每月的收益在10万以上,在取这篇文章标题的时候,最后一句最初定的是“小白也能年入100万”,因为我理所当然的认为月入10万,一年肯定就是100万+,后面发现不能这么计算,因为我是从去年底开始做“IP训练营”的,只有3......
  • Go: 深入理解桥接模式的应用实践
    Go:深入理解桥接模式的应用实践原创 王义杰 运维开发王义杰 2024-04-0320:55 广东 听全文桥接模式是一种结构型设计模式,它将一个大类或一系列紧密相关的类分离为抽象和实现两个层次结构,从而让它们可以独立地变化。通过组合的方式,桥接模式使得抽象和实现可以独立扩......
  • 不到2000字,轻松带你搞懂STM32中GPIO的8种工作模式
    大家好,我是知微!学习过单片机的小伙伴对GPIO肯定不陌生,GPIO(generalpurposeinputoutput)是通用输入输出端口的简称,通俗来讲就是单片机上的引脚。在STM32中,GPIO的工作模式被细分为8种,对于初学者来讲,要理解它们可太难了!诶诶诶,给个机会,先别急着退出哈!这不是有我在呢,跟着这篇文......
  • 探索设计模式的魅力:揭秘B/S模式在AI大模型时代的蜕变与进化
    ​......
  • |行业洞察·AIGC|《AIGC行业深度:发展情况、商业模式、产业链及相关公司深度梳理》
    报告主要内容的解读:1.行业概述概念:AIGC是一种内容生产方式,通过深度学习技术,输入数据后由AI生成内容。它代表了从PGC(ProfessionallyGeneratedContent)和UGC(UserGeneratedContent)到AIUGC的演变。AI与AIGC的演进历程:AI的发展经历了从决策式AI到生成式AI的过程。生成式AI......
  • 探索设计模式之单例模式:打造独一无二的实例
    目录 1.什么是单例模式?2.单例模式的特点3.单例模式的实现方式3.1懒汉式:3.2饿汉式:3.3选择建议4.单例模式的应用场景5.单例模式的优缺点6.总结 1.什么是单例模式?       单例模式是一种创建型设计模式,它保证一个类只有一个实例,并提供全局访问点......