策略模式:主要思想就是,为某一件事情,根据不同的原因,产生不同的结果。
事情抽象为接口 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();
}
}