Skip to content

Commit

Permalink
doc: 备份文章;
Browse files Browse the repository at this point in the history
  • Loading branch information
01Petard committed Dec 17, 2024
1 parent c512a52 commit 792db29
Showing 1 changed file with 65 additions and 2 deletions.
67 changes: 65 additions & 2 deletions docs/杂谈/设计模式的荼毒体现在哪.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,74 @@

假如我有一个加减乘除的方法,我可以这样写:

<img src="https://cdn.jsdelivr.net/gh/01Petard/imageURL@main/img/202412021838343.png" alt="image-20241202183805321" style="zoom:50%;" />
```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;
}
}
```

但如果我希望后续支持更多的计算模式,用了策略模式后,就变成了这样,代码变多了,逻辑也复杂了很多:

<img src="https://cdn.jsdelivr.net/gh/01Petard/imageURL@main/img/202412021837157.png" alt="image-20241202183754131" style="zoom:50%;" />
```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<String, Operation> 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);
}
}
```

## 设计模式的荼毒体现在哪?

Expand Down

0 comments on commit 792db29

Please sign in to comment.