设计模式
设计模式分为创建型模式、结构型模式和行为型模式。
创建型模式:创建对象。
结构型模式:把复杂结构分解为多个类,分解的是类本身(包括算法和属性)。
行为型模式:把复杂算法分解到多个类,分解的是算法。
行为模式-策略模式
策略模式是为了解决复杂条件判定的问题,让代码逻辑更整洁。比如如下代码:
if(){
//...
}else if(){
//...
}else if(){
//...
}else{
//...
}
UML 图
示例代码
public class StrategyPattern {
public static void main(String[] args) {
Context context = new Context(new ConcreteStrategyA());
context.contextInterface();
}
}
// 抽象策略类
interface Strategy {
void algorithmInterface();
}
// 具体策略类 A
class ConcreteStrategyA implements Strategy {
@Override
public void algorithmInterface() {
System.out.println("算法 A 实现");
}
}
// 具体策略类 B
class ConcreteStrategyB implements Strategy {
@Override
public void algorithmInterface() {
System.out.println("算法 B 实现");
}
}
// 具体策略类 C
class ConcreteStrategyC implements Strategy {
@Override
public void algorithmInterface() {
System.out.println("算法 C 实现");
}
}
// 环境类
// 环境类是入口,它持有一个抽象策略类的引用,通过它调用具体策略类的算法。
class Context {
private Strategy strategy;
public Context(Strategy strategy) {
this.strategy = strategy;
}
public void contextInterface() {
strategy.algorithmInterface();
}
}
总结
如果不同条件下的算法相似程度较高,应尽量合并,而非用策略模式拆分出多余的类和接口。