Skip to content

Latest commit

 

History

History
95 lines (70 loc) · 2.02 KB

chapter07-策略模式.md

File metadata and controls

95 lines (70 loc) · 2.02 KB

chapter7-策略模式

定义一系列的算法,并将每个算法封装起来,并且使它们之间可以交换

优点

  • 结构清晰
  • 耦合度降低

缺点

  • 随着策略的增加,子类也会变得繁多,带来额外开销
  • 对客户端暴露所有的策略,有悖于迪米特法则

UML

  • Context —— 用来操作策略的上下文
  • Strategy(SortStrategy) —— 策略的抽象
  • BubbleSort、QuickSort、SelectSort —— 具体的策略实现

示例

SortStrategy 策略的抽象

public interface SortStrategy {
    void sort();
}

BubbleSort 策略的具体实现1

public class BubbleSort implements SortStrategy {
    @Override
    public void sort() {
        System.out.println("Bubble Sort");
    }
}

QuickSort 策略的具体实现2

public class QuickSort implements SortStrategy {
    @Override
    public void sort() {
        System.out.println("Quick Sort");
    }
}

SelectSort 策略的具体实现3

public class SelectSort implements SortStrategy {
    @Override
    public void sort() {
        System.out.println("Select Sort");
    }
}

Context 操作策略

public class Context {

    private SortStrategy strategy;

    public void setStrategy(SortStrategy strategy) {
        this.strategy = strategy;
    }

    public void execute() {
        strategy.sort();
    }
}

StrategyTest 测试

public class StrategyTest {

    public static void main(String[] args) {
        Context context = new Context();
        context.setStrategy(new BubbleSort());
        context.execute();

        // 输出:Bubble Sort
    }
}