1 package test_28_1; 2 3 public abstract class Strategy { 4 5 public abstract void method(); 6 }
1 package test_28_1; 2 3 public class ConcreteStrategyA extends Strategy { 4 5 @Override 6 public void method() { 7 8 System.out.println("ConcreteStrategyA method()"); 9 } 10 }
1 package test_28_1; 2 3 public class ConcreteStrategyB extends Strategy { 4 5 @Override 6 public void method() { 7 8 System.out.println("ConcreteStrategyB method()"); 9 } 10 }
1 package test_28_1; 2 3 public class ConcreteStrategyC extends Strategy { 4 5 @Override 6 public void method() { 7 8 System.out.println("ConcreteStrategyC method()"); 9 } 10 }
1 package test_28_1; 2 3 public class Context { 4 5 private Strategy strategy; 6 7 public Context(Strategy strategy) { 8 9 this.strategy = strategy; 10 } 11 12 public void contextMethod() { 13 14 strategy.method(); 15 } 16 }
1 package test_28_1; 2 3 public class StrategyTest { 4 5 public static void main(String[] args) { 6 7 ConcreteStrategyA A = new ConcreteStrategyA(); 8 ConcreteStrategyB B = new ConcreteStrategyB(); 9 ConcreteStrategyC C = new ConcreteStrategyC(); 10 11 Context contextA = new Context(A); 12 Context contextB = new Context(B); 13 Context contextC = new Context(C); 14 15 contextA.contextMethod(); 16 contextB.contextMethod(); 17 contextC.contextMethod(); 18 } 19 }
结果如下:
ConcreteStrategyA method()
ConcreteStrategyB method()
ConcreteStrategyC method()
[20-06-01][Design Model 10]STRATEGY 1
原文:https://www.cnblogs.com/mirai3usi9/p/13025036.html