西安直播网站开发,站长工具国产2023,做网站刷赞qq怎么赚钱,企业网站域名在哪申请Java策略模式是一种行为设计模式#xff0c;它使你能在运行时改变对象的行为。策略模式定义了一系列的算法#xff0c;并将每一个算法封装起来#xff0c;使它们可以互相替换。策略模式使得算法可以独立于使用它的客户端变化。在Java中实现策略模式#xff0c;通常包含三个… Java策略模式是一种行为设计模式它使你能在运行时改变对象的行为。策略模式定义了一系列的算法并将每一个算法封装起来使它们可以互相替换。策略模式使得算法可以独立于使用它的客户端变化。在Java中实现策略模式通常包含三个角色 策略接口定义了一个公共接口所有的具体策略类都必须实现这个接口。 具体策略类实现了策略接口中定义的方法每一个具体策略类都封装了一种具体的算法或行为。 上下文类持有一个策略对象的引用并负责调用其方法来执行相应的算法或行为。上下文类还可以维护对策略对象的引用并可在运行时动态地改变所使用的策略对象。 上下文本类
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 MapString, CommonStrategyService strategyServiceMap new ConcurrentHashMap();Autowiredpublic void strategyInterface(MapString, 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);}}
}
策略接口
public interface CommonStrategyService {void getTest();boolean success();
}
具体策略类
Service(value A)
public class AStrategyServiceImpl implements CommonStrategyService{Overridepublic void getTest() {}Overridepublic boolean success() {return false;}
}Service(value B)
public class BStrategyServiceImpl implements CommonStrategyService{Overridepublic void getTest() {}Overridepublic boolean success() {return false;}
}Service(value COMMON)
public class CommonStrategyServiceImpl implements CommonStrategyService{Overridepublic void getTest() {}Overridepublic boolean success() {return false;}
}测试
Service
public class StrategyTest {Autowiredprivate StrategyContext strategyContext;public void test() {strategyContext.getStrategy(A).getTest();strategyContext.getStrategy(B).success();}
}