1 parent 8572013 commit 7ee1692Copy full SHA for 7ee1692
1 file changed
DesignPatterns/StrategyPattern/README.md
@@ -3,3 +3,18 @@
3
### 定义
4
策略模式定义了算法家族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化不会影响到使用算法的客户。
5
6
+### 小结
7
+一个策略就是一个计划,通过执行这个计划,我们在既定的输入下给出的特定的输出。一般情况下,为了获得这个输出,使用策略模式比使用算法要有更广阔的选择空间。因为,策略模式通常可以表达为一组方案,这些方案直接可以相互替换。
8
+
9
+如果一个程序中出现了大量策略,那么代码肯定会变得异常复杂。同时用于选定摸个策略的逻辑部分也会随之变得复杂而且不利于维护。当代码需要执行不同的策略时,那么代码就会沿着不同的程序路径去执行,但是这些代码通常都会几种定义在一个方法中。如果有一些代码需要选择并执行一个策略,同时这些代码又异常复杂,那么这时就可以使用策略模式对原有的代码进行简化。
10
11
+使用策略模式可以把相互之间能有替换的策略封装在某些类的内部,这些类通常是互相分离的,每个类都会实现一个同策略相关的公共操作。这个公共操作会规定好策略的输入以及输出,但是操作的实现会由各个策略类独自完成。
12
13
+策略模式适用于一下几种情况:
14
+* 很多相关的类只是在行为上有差异;
15
+* 当需要使用一个算法的不同变体时;
16
+* 使用算法的客户不应该知道算法的具体结构时;
17
+* 当一个类定义了多种行为并且这些行为在这个类的操作中以多个条件语句形式出现时。
18
19
20
0 commit comments