通常实现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对象