diff --git "a/docs/\346\235\202\350\260\210/\350\256\276\350\256\241\346\250\241\345\274\217\347\232\204\350\215\274\346\257\222\344\275\223\347\216\260\345\234\250\345\223\252.md" "b/docs/\346\235\202\350\260\210/\350\256\276\350\256\241\346\250\241\345\274\217\347\232\204\350\215\274\346\257\222\344\275\223\347\216\260\345\234\250\345\223\252.md"
index ac935de..e763f68 100644
--- "a/docs/\346\235\202\350\260\210/\350\256\276\350\256\241\346\250\241\345\274\217\347\232\204\350\215\274\346\257\222\344\275\223\347\216\260\345\234\250\345\223\252.md"
+++ "b/docs/\346\235\202\350\260\210/\350\256\276\350\256\241\346\250\241\345\274\217\347\232\204\350\215\274\346\257\222\344\275\223\347\216\260\345\234\250\345\223\252.md"
@@ -2,11 +2,74 @@
假如我有一个加减乘除的方法,我可以这样写:
-
+```java
+public int calculate(int numa, int numb, char operation) {
+ switch (operation) {
+ case '+':
+ return numa + numb;
+ case '-':
+ return numa - numb;
+ case '*':
+ return numa * numb;
+ case '/':
+ return numa / numb;
+ default:
+ return 0;
+ }
+}
+```
但如果我希望后续支持更多的计算模式,用了策略模式后,就变成了这样,代码变多了,逻辑也复杂了很多:
-
+```java
+public interface Operation {
+ int calculate(int numa, int numb);
+}
+```
+
+```java
+public class Addition implements Operation {
+ @Override
+ public int calculate(int numa, int numb) {
+ return numa + numb;
+ }
+}
+public class Subtraction implements Operation {
+ @Override
+ public int calculate(int numa, int numb) {
+ return numa - numb;
+ }
+}
+public class Multiplication implements Operation {
+ @Override
+ public int calculate(int numa, int numb) {
+ return numa * numb;
+ }
+}
+public class Division implements Operation {
+ @Override
+ public int calculate(int numa, int numb) {
+ return numa / numb;
+ }
+}
+```
+
+```java
+public class OperationFactory {
+ private static final Map operations = new HashMap<>();
+
+ static {
+ operations.put("+", new Addition());
+ operations.put("-", new Subtraction());
+ operations.put("*", new Multiplication());
+ operations.put("/", new Division());
+ }
+
+ public static Operation getOperation(String operation) {
+ return operations.get(operation);
+ }
+}
+```
## 设计模式的荼毒体现在哪?