亚欧色一区w666天堂,色情一区二区三区免费看,少妇特黄A片一区二区三区,亚洲人成网站999久久久综合,国产av熟女一区二区三区

  • 發布文章
  • 消息中心
點贊
收藏
評論
分享
原創

策略工廠模式

2024-11-04 09:32:46
5
0

1.定義基類接口:

public interface IModelParamStrategy extends InitializingBean {
    void checkParam(HttpContextDto httpContextDto);
}

2.定義抽象類,實現策略接口

定義一個抽象類 AbstractModelParamStrategy,它實現了部分 IModelParamStrategy 接口的功能,并留出 checkParam方法需要被具體策略實現類實現

public abstract class AbstractModelParamStrategy implements IModelParamStrategy {

    @Override
    public abstract  void checkParam(HttpContextDto httpContextDto);
}

3.具體的策略實現類

public class ChatParamStrategyV1 extends AbstractModelParamStrategy {

    @Override
    public void checkParam(HttpContextDto httpContextDto) {
     
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        StrategyFactory.register("chat", this);
    }
}

4.實現策略工廠類

public class StrategyFactory {
     /**
     * 存放特殊策略的工廠,使用名稱注冊
     */
    private static Map<String, IModelParamStrategy> nameFactory = new ConcurrentHashMap<>(1);

    public static void register(String name, IModelParamStrategy strategy) {
        if (Objects.isNull(name) || Objects.isNull(strategy)) {
            throw new RuntimeException("參數不能為空!");
        }
        if (nameFactory.containsKey(name)) {
            throw new RuntimeException(String.format("%s類型已被注冊!", name));
        }
        nameFactory.put(name, strategy);
    }
        public static IModelParamStrategy get(String name) {
        if (!nameFactory.containsKey(name)) {
            throw new RuntimeException(name + "類型未支持!");
        }
        return nameFactory.get(name);
    }
}

 

控制類:


  IModelParamStrategy paramStrategy = StrategyFactory.get("chat");
        paramStrategy.checkParam(httpContextDto);

 

 

  

 

0條評論
作者已關閉評論
bilibili
9文章數
0粉絲數
bilibili
9 文章 | 0 粉絲
原創

策略工廠模式

2024-11-04 09:32:46
5
0

1.定義基類接口:

public interface IModelParamStrategy extends InitializingBean {
    void checkParam(HttpContextDto httpContextDto);
}

2.定義抽象類,實現策略接口

定義一個抽象類 AbstractModelParamStrategy,它實現了部分 IModelParamStrategy 接口的功能,并留出 checkParam方法需要被具體策略實現類實現

public abstract class AbstractModelParamStrategy implements IModelParamStrategy {

    @Override
    public abstract  void checkParam(HttpContextDto httpContextDto);
}

3.具體的策略實現類

public class ChatParamStrategyV1 extends AbstractModelParamStrategy {

    @Override
    public void checkParam(HttpContextDto httpContextDto) {
     
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        StrategyFactory.register("chat", this);
    }
}

4.實現策略工廠類

public class StrategyFactory {
     /**
     * 存放特殊策略的工廠,使用名稱注冊
     */
    private static Map<String, IModelParamStrategy> nameFactory = new ConcurrentHashMap<>(1);

    public static void register(String name, IModelParamStrategy strategy) {
        if (Objects.isNull(name) || Objects.isNull(strategy)) {
            throw new RuntimeException("參數不能為空!");
        }
        if (nameFactory.containsKey(name)) {
            throw new RuntimeException(String.format("%s類型已被注冊!", name));
        }
        nameFactory.put(name, strategy);
    }
        public static IModelParamStrategy get(String name) {
        if (!nameFactory.containsKey(name)) {
            throw new RuntimeException(name + "類型未支持!");
        }
        return nameFactory.get(name);
    }
}

 

控制類:


  IModelParamStrategy paramStrategy = StrategyFactory.get("chat");
        paramStrategy.checkParam(httpContextDto);

 

 

  

 

文章來自個人專欄
文章 | 訂閱
0條評論
作者已關閉評論
作者已關閉評論
0
0