设计模式-行为模式-策略模式

85 阅读1分钟

设计模式

设计模式分为创建型模式、结构型模式和行为型模式。
创建型模式:创建对象。
结构型模式:把复杂结构分解为多个类,分解的是类本身(包括算法和属性)。
行为型模式:把复杂算法分解到多个类,分解的是算法。

行为模式-策略模式

策略模式是为了解决复杂条件判定的问题,让代码逻辑更整洁。比如如下代码:

if(){
    //...
}else if(){
    //...
}else if(){
    //...
}else{
    //...
}

UML 图

image.png

示例代码

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();
    }
}

总结

如果不同条件下的算法相似程度较高,应尽量合并,而非用策略模式拆分出多余的类和接口。