0
点赞
收藏
分享

微信扫一扫

ETL的全量和增量模式

whiteMu 03-23 07:30 阅读 4
策略模式
  1. 上下文本类
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

@Component
public class StrategyContext {
	// 保证线程安全
    private final Map<String, CommonStrategyService> strategyServiceMap = new ConcurrentHashMap<>();

    @Autowired
    public void strategyInterface(Map<String, CommonStrategyService> strategyServiceMap) {
        this.strategyServiceMap.clear();
        strategyServiceMap.forEach(this.strategyServiceMap::put);
    }

    public CommonStrategyService getStrategy(String str) {
        if (str.equals("A")) {
            return this.strategyServiceMap.get(str);
        } else if (str.equals("B")) {
            return this.strategyServiceMap.get(str);
        } else {
            return this.strategyServiceMap.get("COMMON");
        }
    }
}

  1. 策略接口
public interface CommonStrategyService {
    void getTest();

    boolean success();
}

  1. 具体策略类
@Service(value = "A")
public class AStrategyServiceImpl implements CommonStrategyService{
    @Override
    public void getTest() {

    }

    @Override
    public boolean success() {
        return false;
    }
}
@Service(value = "B")
public class BStrategyServiceImpl implements CommonStrategyService{
    @Override
    public void getTest() {

    }

    @Override
    public boolean success() {
        return false;
    }
}
@Service(value = "COMMON")
public class CommonStrategyServiceImpl implements CommonStrategyService{
    @Override
    public void getTest() {

    }

    @Override
    public boolean success() {
        return false;
    }
}
  1. 测试
@Service
public class StrategyTest {
    @Autowired
    private StrategyContext strategyContext;

    public void test() {
        strategyContext.getStrategy("A").getTest();
        strategyContext.getStrategy("B").success();
    }
}
举报

相关推荐

0 条评论