在一个项目的多次版本迭代之后,可能会出现如下,十分冗长的代码。
不能修改以前遗留的代码,但又想使我们的代码变的更加优雅,此时我们可以考虑使用设计模式。
public static void main(String[] args) {
String value = "a";
if("a".equals(value)){
System.out.println("a的逻辑");
}
else if("b".equals(value)){
System.out.println("b的逻辑");
}
else if("c".equals(value)){
System.out.println("c的逻辑");
}
else if("d".equals(value)){
System.out.println("d的逻辑");
}
else if("e".equals(value)){
System.out.println("e的逻辑");
}
else if("f".equals(value)){
System.out.println("f的逻辑");
}
else if("z".equals(value)){
System.out.println("z的逻辑");
}
}
以下是我使用策略模式,对代码进行的优化:
1.创建一个策略接口
/**
* 策略接口
*/
public interface Strategy {
void execute();
}
2.创建具体的策略类
/**
* a的业务逻辑
*/
public class StrategyA implements Strategy{
@Override
public void execute() {
System.out.println("a的逻辑");
}
}
/**
* b的业务逻辑
*/
public class StrategyB implements Strategy{
@Override
public void execute() {
System.out.println("b的逻辑");
}
}
以此类推
3.创建上下文类,负责执行策略
/**
* 上下文类,负责执行策略
*/
public class Context {
private Strategy strategy;
public Context(Strategy strategy) {
this.strategy = strategy;
}
public void executeStrategy(){
strategy.execute();
}
}
4.使用策略模式
public static void main(String[] args) {
String value = "a";
if("a".equals(value)){
StrategyA strategyA = new StrategyA();
Context context = new Context(strategyA);
context.executeStrategy();
}
else if("b".equals(value)){
StrategyB strategyB = new StrategyB();
Context context = new Context(strategyB);
context.executeStrategy();
}
}