Java 设计模式(3)策略模式
- 上一篇
- 特点
- 环境(Context)角色:持有一个Strategy的引用
- 抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。
- 具体策略(ConcreteStrategy)角色:包装了相关的算法或行为。
- 分类
-
// 抽象策略类 public interface Strategy { /** * 策略方法 */ public void strategyInterface(); } // 具体策略类A public class ConcreteStrategyA implements Strategy { @Override public void strategyInterface() { //相关的业务 } }
// 具体策略类B public class ConcreteStrategyB implements Strategy { @Override public void strategyInterface() { //相关的业务 } }
// 具体策略类C public class ConcreteStrategyC implements Strategy { @Override public void strategyInterface() { //相关的业务 } } // 环境角色类 public class Context { //持有一个具体策略的对象 private Strategy strategy; /** * 构造函数,传入一个具体策略对象 * @param strategy 具体策略对象 */ public Context(Strategy strategy){ this.strategy = strategy; } /** * 策略方法 */ public void contextInterface(){ strategy.strategyInterface(); } } // 调用 public class Diaoyong{ public static void main(String[] args) { Context context; System.out.println("----------满足A条件时---------------"); context = new Context(new ConcreteStrategyA()); context.contextInterface();//拆开执行 System.out.println("\n\n\n\n\n\n\n\n\n\n\n\n\n"); System.out.println("----------满足B条件时---------------"); context = new Context(new ConcreteStrategyB()); context.contextInterface();//拆开执行 System.out.println("\n\n\n\n\n\n\n\n\n\n\n\n\n"); System.out.println("----------满足C条件时---------------"); context = new Context(new ConcreteStrategyC()); context.contextInterface();//拆开执行 System.out.println("\n\n\n\n\n\n\n\n\n\n\n\n\n"); } }
-
- 下一篇
本文来自博客园,作者:zwjvzwj,转载请注明原文链接:https://www.cnblogs.com/zwjvzwj/p/19002969