5.策略设计模式
1.概述
实现某一功能往往有多种策略(算法),通常的实现方式是把所有的策略封装在一个策略类中,客户端通过策略类的对象调用不同的策略算法,这种设计方式的缺点是随着策略数量的增加策略类会变得很复杂,而且如果增加新的策略必须修改原有的代码
2.策略设计模式的思想
- 1.所有的策略的公共方法方法放在基接口中
- 2.各种策略分别实现这个接口
- 3.环境类包含一个策略对象,可以调用相对应的策略的算法
- 3.客户端与环境类进行交互,实现相对应的策略
3.代码
- 描述:一个简单的程序
- 选择一种外出旅游的出行方式
-
public interface Travel { void travel();//旅行的算法(策略) }
- 描述:基础接口
-
public class Bus implements Travel{ @Override public void travel(){ System.out.println("乘坐公交车出行"); } }
- 描述:乘坐公交车出行
-
public class Train implements Travel{ @Override public void travel(){ System.out.println("乘坐火车过出行"); } }
- 描述:乘坐或称出翔
-
public class Flighjt implements Travel{ @Override public void travel(){ System.out.println("乘坐飞机出行"); } }
- 描述:乘坐飞机出行
-
public class Context { private Travel travel; public Context(Travel travel){ this.travel=travel; } //选择出行方式 public void travel(){ travel.travel(); } }
- 描述:环境类,包含一个出行策略对象
-
public class Main { public static void main(String[] args){ Context context=new Context(new Flighjt()); context.travel(); } }