mirror of
https://github.com/CyC2018/Interview-Notebook.git
synced 2026-11-01 11:43:46 +00:00
Update 设计模式 - 状态.md
补充糖果机示例中状态模式实现的说明,并对参考书目进行文字校对。
This commit is contained in:
+3
-1
@@ -11,6 +11,8 @@
|
||||
|
||||
<div align="center"> <img src="pics/state-gumball.png" width="740px"/> </div><br>
|
||||
|
||||
不用状态模式时,GumballMachine 的每个方法都要先用 if-else 判断当前处于哪种状态;新增一种状态,四个方法都要修改。下面的实现把每种状态写成一个 State 的实现类:GumballMachine 只把调用转交给当前的 state 对象,状态类在方法中调用 setState() 切换到下一个状态。例如在 NoQuarterState 中投币,会切换到 HasQuarterState,此后再投币就会被拒绝。
|
||||
|
||||
```java
|
||||
public interface State {
|
||||
/**
|
||||
@@ -300,4 +302,4 @@ No gumball dispensed
|
||||
## 参考资料
|
||||
|
||||
- 弗里曼. Head First 设计模式 [M]. 中国电力出版社, 2007.
|
||||
- Gamma E. 设计模式: 可复用面向对象软件的基础 [M]. 机械工业出版社, 2007.
|
||||
- Gamma E. 设计模式:可复用面向对象软件的基础 [M]. 机械工业出版社, 2007.
|
||||
|
||||
Reference in New Issue
Block a user