通常實現git
public static void main(String[] args) { ExcuMenthod em = new ExcuMenthod(); em.method1(); em.method2(); em.method3(); }
public static void main(String[] args) { ExcuMenthod em = new ExcuMenthod(); em.method1(); em.method2(); em.method3(); }
策略模式github
容器類:經過構造方法注入IStrategy接口的實現類,而後調用接口的執行方法;ide
public class Context { private IStrategy strategy; public Context(IStrategy strategy){ this.strategy = strategy; } public void operator (){ strategy.operator(); } }
策略接口:定義策略的執行方法;
public interface IStrategy { void operator(); }
策略接口:實現策略接口,擁有具體的執行方法;
public class Strategy1 implements IStrategy{ @Override public void operator() { System.out.println("FIRST OPERATOR ..."); } }
public class Strategy2 implements IStrategy{ @Override public void operator() { System.out.println("SECOND OPERATOR ..."); } }
public class Strategy3 implements IStrategy{ @Override public void operator() { System.out.println("THIRD OPERATOR ..."); } }
在測試方法中實例化一個容器,經過構造方法利用多態的性質傳入具體的實現類,調用容器的執行方法,即實現具體策略類的執行方法。測試
public static void main(String[] args) { Context context = new Context(new Strategy1()); context.operator(); context = new Context(new Strategy2()); context.operator(); context = new Context(new Strategy3()); context.operator(); }
輸出:
FIRST OPERATOR ... SECOND OPERATOR ... THIRD OPERATOR ...
動態改變對象的行爲。this
源碼code
https://github.com/Seasons20/DisignPattern.git
END對象