android中,java中的策略模式Strategy模式
来源:互联网 发布:paxos算法代码 编辑:程序博客网 时间:2024/05/17 00:09
策略模式
概念:
策略模式就是定义不同的算法,或者说不同的情况并且将不同的行为方式封装起来,根据不同的情况来使用不同的算法或者行为,当然,前提是结果都是一致的。
官方的说法是:
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变换。
我们先从例子说起吧,其实很简单:我们平时在做算法的时候会想到很多情况,比如说数值,返回值不同,使用不同的算法,用一个if else判断,或者swich判断,进行不同的算法,这里,从一个生活的实例说起吧:
我们出门旅游。有三种不同的算法(方式),步行,飞机,火车//旅游策略类public class TravelStrategy {//枚举中定义了三种不同的算法常量 enum Strategy{//步行,飞机,火车 WALK,PLANE,SUBWAY } private Strategy strategy; public TravelStrategy(Strategy strategy){ this.strategy=strategy; } //旅游方法 public void travel(){//判断方式分别进行操作 if(strategy==Strategy.WALK){ print(walk); }else if(strategy==Strategy.PLANE){ print(plane); }else if(strategy==Strategy.SUBWAY){ print(subway); } } public void print(String str){ System.out.println(出行旅游的方式为:+str); } public static void main(String[] args) {//调用方法 TravelStrategy walk=new TravelStrategy(Strategy.WALK); walk.travel(); TravelStrategy plane=new TravelStrategy(Strategy.PLANE); plane.travel(); TravelStrategy subway=new TravelStrategy(Strategy.SUBWAY); subway.travel(); }}这些都是正常思维方式下我们平时使用的方式。但是这样做有一个致命的缺点,一旦出行的方式要增加,我们就不得不增加新的else if语句,而这违反了面向对象的原则之一,对修改封闭。而这时候,策略模式则可以完美的解决这一切。那么用策略模式如何去做呢??步骤:(分四步):1,创建旅游接口,定义旅游方法2,创建不同的实现类,实现接口,3,创建策略包装类,实现包装4,方法的调用接口public interface Strategy { void travel();}实现类:1,2,3public class WalkStrategy implements Strategy{ @Override public void travel() { System.out.println(walk); } }public class PlaneStrategy implements Strategy{ @Override public void travel() { System.out.println(plane); } }public class SubwayStrategy implements Strategy{ @Override public void travel() { System.out.println(subway); } }包装类public class TravelContext { Strategy strategy; public Strategy getStrategy() { return strategy; } public void setStrategy(Strategy strategy) { this.strategy = strategy; } public void travel() { if (strategy != null) { strategy.travel(); } }}调用:public class Main { public static void main(String[] args) { TravelContext travelContext=new TravelContext(); travelContext.setStrategy(new PlaneStrategy()); travelContext.travel(); travelContext.setStrategy(new WalkStrategy()); travelContext.travel(); travelContext.setStrategy(new SubwayStrategy()); travelContext.travel(); }}这样,如果以后只要增加了旅游的方式,只需要增加实现类就可以了,符合面向对象的思想
1 0
- android中,java中的策略模式Strategy模式
- java中设计模式-Strategy(策略模式)
- Java策略模式(Strategy)
- Java策略模式(Strategy模式)
- Java 设计模式-策略模式(Strategy)Android讲解
- java 策略(Strategy)模式
- Java策略模式(Strategy)
- Java策略模式(Strategy)1
- Java 实现策略(Strategy)模式
- Java 策略模式 (Strategy Pattern)
- Java Strategy Pattern(策略模式)
- Java 设计模式--策略(Strategy)
- Android设计模式-策略模式(Strategy Pattern)
- Java中的策略模式(strategy)完全解析
- 策略模式 Strategy模式
- Strategy模式 策略模式
- 策略模式(Strategy模式)
- java模式之策略模式(Strategy Pattern)
- HTML+CSS交互 (3)
- CString 字符串切割函数
- DataGrid控件的DefColWidth属性
- linux下查看进程的位置
- 268. Missing Number
- android中,java中的策略模式Strategy模式
- HTML+CSS使用CSS为网页添加样式 (4)
- 操作系统中的存储管理
- 大龄程序员的前途令人担忧
- 什么是自组织竞争网络?
- xhprof测试
- Pair RDD行动操作
- JavaScript弹出窗口并回填父窗口参数的两种方式
- centos6.7 64位下安装MySQL-5.5