策略模式:策略模式类似于状态模式。也是通过多态表现的一种设计模式。区别在于状态模式讲究的是行为状态为主题,讲究不同对象的不同行为。策略模式则是以服务对象为主题,讲究对同一个对象使用不同的服务。
public class Test { public static void main(String[] args){ String s="Hello world"; A a1=new B(); A a2=new C(); D d=new D(); d.setA(a1); d.say(s); d.setA(a2); d.say(s); } } class A{ public void say(String s){ System.out.println(s); }; } class B extends A{ public void say(String s){ System.out.println(s.toUpperCase()); }; } class C extends A{ public void say(String s){ System.out.println(s.toLowerCase()); }; } class D{ private A a=null; public void setA(A a2){ this.a=a2; } public void say(String s){ this.a.say(s); } }
最终输出为:
HELLO WORLD
hello world
其中D为环境角色,A为抽象策略角色,BC为具体策略角色。。
环境配置好之后把不同的A类带入D中使用同样的方法达到效果