策略模式
这玩意很简单,举个例子,就是为了让你选择解决一件事的方法。比如我上学,我可以走着去,可以可以开飞机去,可以爬过去,这些都是去上学的方法。但写在一个方法里需要很多的if和else,维护起来非常的不方便,所以推出了策略模式。
示例:向一个类里面传入不同的类,会根据传入类的不同执行不同的方法。
- 首先写一个接口用来放需要执行的不同的方法(出行方式)。
public interface GoToSchool
{
void action();
}
- 然后创造不同的方法(出行方式),以下都是不同的方法:
public class ByFoot implements GoToSchool {
@Override
public void action() {
System.out.println("走路去上学,很累的,但是没得办法,没有钱!");
}}
public class ByPlane implements GoToSchool{
@Override
public void action() {
System.out.println("可能学校离得远,需要飞过去把~");
}}
public class ByTaxi implements GoToSchool{
@Override
public void action() {
System.out.println("什么家庭,居然搭计程车去上学,哦原来是我啊!");
}}
- 根据传入的类的不同,调用该类的action方法。
public class ZSPGo {
private GoToSchool toSchool;
public ZSPGo(GoToSchool toSchool){
this.toSchool=toSchool;
}
public void exec(){
toSchool.action();
}}
- 创建主方法实现它。
public class StuGoSchool { public static void main(String[] args) {
ZSPGo zspGoByFoot=new ZSPGo(new ByFoot());
zspGoByFoot.exec();
System.out.println("===============");
ZSPGo zspGoByPlane=new ZSPGo(new ByFoot());
zspGoByPlane.exec();
System.out.println("===============");
ZSPGo zspGoByTaxi=new ZSPGo(new ByTaxi()); zspGoByTaxi.exec(); }}