策略模式:主要思想就是,为某一件事情,根据不同的原因,产生不同的结果。
事情抽象为接口 InterfaceOne ,
根据不同的原因,设计不同的接口实现 ClassOne ClassTwo ClassDefault ,
原因为传入的参数,或者是为调用某一个实现,而定义的一组标准代号 one two test。
代码如下:
package com.mkf.pattern;public interface InterfaceOne { public void operation();}package com.mkf.pattern.impl;import com.mkf.pattern.InterfaceOne;public class ClassOne implements InterfaceOne { @Override public void operation() { System.out.println("调用了 " + ClassOne.class.getName() + " 实现"); }}package com.mkf.pattern.impl;import com.mkf.pattern.InterfaceOne;public class ClassTwo implements InterfaceOne { @Override public void operation() { System.out.println("调用了 " + ClassTwo.class.getName() + " 实现"); }}package com.mkf.pattern.impl;import com.mkf.pattern.InterfaceOne;public class ClassDefault implements InterfaceOne { @Override public void operation() { System.out.println("调用了 " + ClassDefault.class.getName() + " 实现"); }}package com.mkf.pattern;import com.mkf.pattern.impl.ClassDefault;import com.mkf.pattern.impl.ClassOne;import com.mkf.pattern.impl.ClassTwo;public class TestStrategy { /** * @param args */ public static void main(String[] args) { startStrategy("one"); startStrategy("two"); startStrategy("test"); } public static void startStrategy(String str){ InterfaceOne io = null; if(str.equals("one")){ io = new ClassOne(); }else if(str.equals("two")){ io = new ClassTwo(); }else{ io = new ClassDefault(); } io.operation(); }}