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

策略模式1

时间:2023-03-21 16:45:07浏览次数:28  
标签:String 策略 budget 模式 strategy com public cmit

package com.cmit.budget.strategy;

import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;

import java.util.Map;

/**
 * @author lyc
 * @ClassName OrderContextStrategy
 * @Description TODO
 * @date 2023/3/21 14:51
 */
@Component
public class OrderContextStrategy {

    public static OrderGenerateStrategy getInstance(String commandType) {
        //此处我采用enum 也可以采用其他方式去实现
        OrderGenerateStrategy orderGenerateStrategy = null;
        Map<String, String> allClazz = OrderFilter.getAllClazz();
        String clazz = allClazz.get(commandType.trim().toLowerCase());
        if (StringUtils.isNoneEmpty(clazz)) {
            try {
                //调用无参构造器创建实例
                orderGenerateStrategy = (OrderGenerateStrategy) Class.forName(clazz).newInstance();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return orderGenerateStrategy;
    }
}

 

package com.cmit.budget.strategy;

/**
 * @author lyc
 * @ClassName OrderAAAStrategyImpl
 * @Description TODO
 * @date 2023/3/21 14:55
 */
public class OrderAAAStrategyImpl implements OrderGenerateStrategy {
    @Override
    public boolean orderGeneration(String type) {
        return false;
    }
}

 

package com.cmit.budget.strategy;

/**
 * @author lyc
 * @ClassName OrderGoodStrategyImpl
 * @Description TODO
 * @date 2023/3/21 14:56
 */
public class OrderGoodStrategyImpl implements OrderGenerateStrategy{
    @Override
    public boolean orderGeneration(String type) {
        return false;
    }
}

 

package com.cmit.budget.strategy;

import java.util.HashMap;
import java.util.Map;

/**
 * @author lyc
 * @ClassName OrderFilter
 * @Description TODO
 * @date 2023/3/21 14:56
 */
public enum OrderFilter {
    ORDER_FILTER_NINE("9", "com.cmit.budget.strategy.OrderAAAStrategyImpl"),

    /**
     * GOOD
     */
    ORDER_FILTER_GOOD_COMPANY("23", "com.cmit.budget.strategy.OrderGoodStrategyImpl");

    private String className;
    private String command;

    public String getCommand() {
        return command;
    }

    public void setCommand(String command) {
        this.command = command;
    }

    public static Map<String, String> getAllClazz() {
        Map<String, String> map = new HashMap<>();
        for (OrderFilter commandEnum : OrderFilter.values()) {
            map.put(commandEnum.getCommand(), commandEnum.getClassName());
        }
        return map;
    }

    OrderFilter(String command, String className) {
        this.setCommand(command);
        this.setClassName(className);
    }

    public String getClassName() {
        return className;
    }

    public void setClassName(String className) {
        this.className = className;
    }
}

 

package com.cmit.budget.strategy;

/**
 * @author lyc
 * @ClassName test
 * @Description TODO
 * @date 2023/3/21 14:59
 */
public class test {
    public static void main(String[] args) {
        OrderGenerateStrategy instance = OrderContextStrategy.getInstance("9");
        boolean b = instance.orderGeneration("");
    }
}

 

package com.cmit.budget.strategy;

/**
 * @author lyc
 * @ClassName OrderGenerateStrategy
 * @Description TODO
 * @date 2023/3/21 14:52
 */
public interface OrderGenerateStrategy {

    boolean orderGeneration(String type);
}

 

标签:String,策略,budget,模式,strategy,com,public,cmit
From: https://www.cnblogs.com/lyc-code/p/17240504.html

相关文章

  • redis去掉保护模式
    #情境今天在部署redis的过程当中,启动之后,竟然报了一堆警告的错误,客户端也连接不上redis这就很奇怪了,原来是redis开启了保护模式#解决1)首先进入redis客户端模式./redis-c......
  • 异常事件升级策略
    一、背景目前告警是针对实时数值计算的结果,判定当前的值是否需要告警,存在以下问题:不能知道什么时候该告警结束当没有收到告警时,不能确定是因为收敛规则导致的暂时告警......
  • 前端设计模式——状态模式
    状态模式(StatePattern):将对象的行为和状态分离,使得对象可以根据不同的状态来改变自己的行为。在前端开发中,可以使用状态模式来管理页面的状态和响应用户的交互。在状态模......
  • Solon2 接口开发: 实战 Gateway 模式效果
    1、效果预览网关@Mapping("/api/v3/app/**")@ComponentpublicclassApiGateway3xextendsUapiGateway{@Overrideprotectedvoidregister(){fi......
  • 用状态模式改善代码的可维护性
    设计模式之状态模式状态模型是一种软件设计模式,它通过将对象的行为随状态变化而变化来实现状态机的行为。状态机可以将一个对象的生命周期分解为若干个状态,并规定在不同状......
  • 性能测试知识科普(二):测试策略
    转载:https://www.cnblogs.com/imyalost/p/16711597.html上一篇文章聊到了性能测试最基本的三个术语:并发、TPS、响应时间,并且以高速收费站的故事为例,详细的分析了这三个术......
  • hash模式下前后端路径相同时,nginx如何转发
    背景:前期没有进行前后端分离,前端页面由后端转发,即路由的前缀由后端的接口前缀决定;现在想要做到不改变路径做前后端分离且容器化。前后端分离后,前后端的转发要根据路径前......
  • 前端设计模式——桥接模式
    桥接模式(BridgePattern)是一种结构型设计模式,用于将一个大类或一系列紧密相关的类拆分为抽象和实现两个独立的层次结构,从而能够更好地组合和扩展这些类。在前端开发中,桥接......
  • 设计模式(二十六)----行为型模式之备忘录模式
    1概述备忘录模式提供了一种状态恢复的实现机制,使得用户可以方便地回到一个特定的历史步骤,当新的状态无效或者存在问题时,可以使用暂时存储起来的备忘录将状态复原,很多软件......
  • jQuery的Command模式插件 command.js
    基于jQuery的Command模式插件。该插件将页面元素看成是一个个的对象,通过插件给对象赋予特定的状态,并定义特定的Command。一旦发生关联操作的时候,可以通过通知修改状态或者......