zoukankan      html  css  js  c++  java
  • 策略模式经典实战

    策略模式经典实战

    /**
    * 接口
    */
    public interface ITestService {
    public String sayHello();
    }


    //定义一个抽象,处理公共部分
    public class AbstractTest {
    public void commonHandler(){
    System.out.println("AbstractTest#common");
    }
    }

    /**
    * 策略一
    */
    @Service("aFaceServiceStrategyImpl")
    public class ATestServiceStrategyImpl extends AbstractTest implements ITestService {
    @Override
    public String sayHello() {
    commonHandler();
    return "AFaceServiceImpl.sayHello()";
    }
    }

    /**
    * 策略二
    */
    @Service("bFaceServiceStrategyImpl")
    public class BTestServiceStrategyImpl extends AbstractTest implements ITestService {
    @Override
    public String sayHello() {
    commonHandler();
    return "BFaceServiceImpl.sayHello()";
    }
    }

    /**
    * 工厂类
    * 通过入参type选择不同的策略执行
    */
    @Component
    public class ProcessFactroy implements ApplicationContextAware {

    private static ApplicationContext applicationContext;
    @Override
    public void setApplicationContext(ApplicationContext arg0) throws BeansException {//此处特别注意,默认的入参是applicationContext,此处必须修改这个入参,比如改成arg0,否则启动项目会报错
            applicationContext = arg0;
    }

    private static Map<String, ITestService> map = Maps.newHashMap();
    @PostConstruct
    public void register(){
    map.put("a",applicationContext.getBean(ATestServiceStrategyImpl.class));
    map.put("b",applicationContext.getBean(BTestServiceStrategyImpl.class));
    }

    public static ITestService getProcess(String type){
    ITestService iTestService = map.get(type);
    if(iTestService == null){
    throw new RuntimeException("参数不合法");
    }
    return iTestService;
    }

    }


    /**
    * 控制层,通过ProcessFactroy 工厂选择不同策略执行
    */
    @RestController
    public class TestContoller {
    @RequestMapping(value = "/test",method = RequestMethod.GET)
    public String faceRecognition(@RequestParam("type") String type){
    ITestService iTestService = ProcessFactroy.getProcess(type);
    return iTestService.sayHello();
    }
    }








  • 相关阅读:
    逆向
    BUUCTF
    学校健康系统自动打卡
    SQL数据库操作练习(3)
    简单尝试UPX脱壳
    网站WAF-安全狗的绕过(一)
    【题解】担心
    【题解】树上的鼠
    【题解】CF1299B Aerodynamic
    【题解】等你哈苏德
  • 原文地址:https://www.cnblogs.com/wenhuang/p/13514369.html
Copyright © 2011-2022 走看看