参考文档:
1.设计模式书籍;
2.http://blog.csdn.net/hguisu/article/details/7558249
策略模式Strategy(对象行为型)
理论方面,可以看看下面的文章,写的非常好。
hguisu 设计模式 ( 十八 ) 策略模式Strategy(对象行为型) http://blog.csdn.net/hguisu/article/details/7558249
代码实现,为出行旅游的案例:
Test.java:
package com.rick.designpattern.strategy; /** * Created by MyPC on 2017/6/1. */ public class Test { public static void main(String[] args) { PersonContext personContext = null; personContext = new PersonContext(new AirPlaneStrategy()); personContext.travel(); personContext = new PersonContext(new BicycleStrategy()); personContext.travel(); personContext = new PersonContext(new TrainStrategy()); personContext.travel(); } }
PersonContext.java:
package com.rick.designpattern.strategy; /** * Created by MyPC on 2017/6/1. */ public class PersonContext { private TravelStrategy mTravelStrategy; public PersonContext(TravelStrategy mTravelStrategy) { this.mTravelStrategy = mTravelStrategy; } public void travel() { mTravelStrategy.travel(); } }
TravelStrategy.java:
package com.rick.designpattern.strategy; /** * Created by MyPC on 2017/6/1. */ public class TravelStrategy { public void travel() { System.out.println("TravelStrategy is travel"); } }
AirPlaneStrategy.java:
package com.rick.designpattern.strategy; /** * Created by MyPC on 2017/6/1. */ public class AirPlaneStrategy extends TravelStrategy { @Override public void travel() { System.out.println("travel is Airplane"); } }
BicycleStrategy.java:
package com.rick.designpattern.strategy; /** * Created by MyPC on 2017/6/1. */ public class BicycleStrategy extends TravelStrategy { @Override public void travel() { System.out.println("travel is bicycle"); } }
TrainStrategy.java:
package com.rick.designpattern.strategy; /** * Created by MyPC on 2017/6/1. */ public class TrainStrategy extends TravelStrategy{ @Override public void travel() { System.out.println("travel is train"); } }