diff --git a/README.md b/README.md index fa55424..734136e 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,6 @@ + [x] [解释器模式(Interpreter)](./behavior/08_interpreter) + [x] [职责链模式(Chain of Responsibility)](./behavior/06_chain_of_responsibility) - ## 创建型模式 Creation Patterns + [x] [New模式(New)](./creation/01_new) @@ -43,7 +42,6 @@ + [x] [抽象工厂模式(Abstract Factory)](./creation/08_abstract_factory) + [x] [原型模式(Prototype)](./creation/07_prototype) - ## 结构型模式 Structure Patterns + [x] [外观模式(Facade)](./structure/01_facade) @@ -54,7 +52,7 @@ + [x] [装饰器模式(Decorator)](./structure/06_decorator) + [x] [代理模式(Proxy)](./structure/07_proxy) -## 更多 Go More +## 更多模式 Go More Patterns + [x] [发布订阅模式(Pub-Sub)](./gomore/01_messages) + [x] [时差模式(Time Profile)](./gomore/02_profiles) @@ -69,7 +67,6 @@ + [ ] [WIP][屏障模式(N-Barrier)](./gomore/11_n_barrier) + [ ] [WIP][有限并行模式(Bounded Parallelism)](./gomore/12_bounded_parallelism) - ## 参考资料(Design patters Articles) | Patterns | Design Patterns | Status | diff --git a/behavior/09_memento/README.md b/behavior/09_memento/README.md index 071b4f8..249bd8d 100644 --- a/behavior/09_memento/README.md +++ b/behavior/09_memento/README.md @@ -8,9 +8,8 @@ 现实生活中涉及备份和快照的例子就太多了,日常的打游戏存档,下次玩的时候,读取存档,读取进度,也是这个模式。 - 该模式中有三个关键角色: - 1. 发起人角色 Originator: 负责记录当前的内部状态,提供当前状态数据,并负责恢复备忘录数据。 - 2. 备忘录角色 Memento : 负责存放发起人对象某个时刻的内部状态,这就是要保存的数据结构类型。 - 3. 管理者角色 Caretaker: 负责保存备忘录对象。 +- 1. 发起人角色 Originator: 负责记录当前的内部状态,提供当前状态数据,并负责恢复备忘录数据。 +- 2. 备忘录角色 Memento : 负责存放发起人对象某个时刻的内部状态,这就是要保存的数据结构类型。 +- 3. 管理者角色 Caretaker: 负责保存备忘录对象。 diff --git a/behavior/10_state/README.md b/behavior/10_state/README.md index 1b93947..650866e 100644 --- a/behavior/10_state/README.md +++ b/behavior/10_state/README.md @@ -1,11 +1,13 @@ # 状态模式 -状态模式的目的就是设计一个状态机,用状态的改变/流转驱动行为变化,前提是需要知道所有的状态,否则,该模式有益于根据已知状态扩展行为。 +状态模式的目的就是设计一个状态机,用状态的改变/流转驱动行为变化,同时将状态的实现放在外部,以方便扩展状态。 - -我们打游戏,游戏角色的拟人状态有:走,跑,原地不动,休息 +日常生活的很多情况都在跟状态打交道,比如闹装有,振铃,非振铃状态,商业有营业和关门状态,饭有生,熟,半生不熟三种状态,机器人,游戏角色的拟人状态有:走,跑,跳,充电(休息)等状态。 状态模式的关键角色: - Context: 拥有多种状态的上下文对象(struct), 持有状态属性State - State: 封装特定状态行为的interface - ConcreteState: 具体的状态,继承接口State,不同的状态执行Context的不同行为 + ++ Context: 拥有多种状态的上下文对象(struct), 持有状态属性State ++ State: 封装特定状态行为的interface ++ ImplementedState: 具体的状态,继承接口State,不同的状态执行Context的不同行为。 + +状态模式常常需要耦合有状态的对象本身的引用,或者相关接口,以获取对象的完整的状态。