策略模式主要涉及到三个部分,一个抽象的策略,多个具体的策略和一个或多个带有抽象策略引用的策略执行者。
下面将用策略模式实现一个司机开车的场景。
场景描述:司机开车有两种策略,一种开的快,另一种是开的慢,在这里司机就是策略的执行者。
实现代码如下。
package designpattern;
public interface Strategy {
public void carryOut();
}
package designpattern;
public class AfterStrategy implements Strategy {
@Override
public void carryOut() {
System.out.println("现在执行落后的策略:开车开的快哦");
}
}
package designpattern;
public class BeforeStrategy implements Strategy {
@Override
public void carryOut() {
System.out.println("现在执行领先的策略:开车开的稳哦");
}
}
package designpattern;
public class Driver {
private Strategy strategy;
public Driver() {
super();
}
public void setStrategy(Strategy strategy) {
this.strategy = strategy;
}
public Strategy getStrategy() {
return strategy;
}
public void drive() {
strategy.carryOut();
}
public static void main(String[] args) {
Driver driver = new Driver();
driver.setStrategy(new AfterStrategy());
driver.drive();
}
}