什么是策略模式?
Strategy pattern is mainly about using different algorithm at different situation.
策略模式。又叫算法簇模式,就是定义了不同的算法族,而且之间能够互相替换,此模式让算法的变化独立于使用算法的客户。 策略模式的优点在于你能够动态的改变对象的行为。 一般的。策略模式主要分为下面三个角色: 1.环境角色(Context):持有一个策略类引用 2.抽象策略(Strategy):定义了多个详细策略的公共接口,详细策略类中各种不同的算法以不同的方式实现这个接口;Context使用这些接口调用不同实现的算法。一般的,我们使用接口或抽象类实现。3.详细策略(ConcreteStrategy):实现抽象策略类中的相关的算法或操作。
/** * 策略模式首先定义了一个接口行为。实现了接口的子类有不同的行为实现 然后再一个场景类中维护了一个指向接口类的引用。 这样在不同的场景下调用不同的 * 行为算法来处理 */interface Strategy { // 定义接口方法 public void processPrice(int price);}// VIP待遇class Vip implements Strategy { public void processPrice(int price) { System.out.println("VIP用" + price + "元坐在VIP房"); }}// 普通待遇class Ordinary implements Strategy { public void processPrice(int price) { System.out.println("Ordinary用" + price + "元坐在普通房"); }}class Situation { private Strategy strategy; public Situation(Strategy strategy) { this.strategy = strategy; } public void handConsumer(int price) { this.strategy.processPrice(price); }}public class Main { public static void main(String[] args) { Ordinary ord = new Ordinary(); Vip vip = new Vip(); Situation s1 = new Situation(ord); Situation s2 = new Situation(vip); s1.handConsumer(10); s2.handConsumer(10); }}