总述
它把各种不同的算法封装成对象然后使用。
类图
策略模式.png
效果
具体策略1
具体策略2
具体策略3
Process finished with exit code 0
调用
package com.company;
public class Main {
public static void main(String[] args) {
// write your code here
User user = new User(new Strategy1());
user.doIt();
user = new User(new Strategy2());
user.doIt();
user = new User(new Strategy3());
user.doIt();
}
}
使用者
package com.company;
public class User {
StrategyInterface strategy;
/**
* 构造带有不同的策略对象的构造方法。
* @param strategy
*/
public User(StrategyInterface strategy) {
this.strategy = strategy;
}
/**
* 执行策略的方法。
*/
public void doIt() {
this.strategy.executeStrategy();
}
}
策略接口
package com.company;
/**
* 策略模式的通用类型
*/
public interface StrategyInterface {
/**
* 执行具体策略的接口
*/
void executeStrategy();
}
策略1
package com.company;
public class Strategy1 implements StrategyInterface {
@Override
public void executeStrategy() {
System.out.println("具体策略1");
}
}
策略2
package com.company;
public class Strategy2 implements StrategyInterface {
@Override
public void executeStrategy() {
System.out.println("具体策略2");
}
}
策略3
package com.company;
public class Strategy3 implements StrategyInterface {
@Override
public void executeStrategy() {
System.out.println("具体策略3");
}
}
网友评论