首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >纪念品设计模式与状态设计模式

纪念品设计模式与状态设计模式
EN

Stack Overflow用户
提问于 2013-08-24 15:53:21
回答 3查看 3.5K关注 0票数 6

Memento设计模式用于将对象还原到以前的状态,如撤销。但我们可以做多次撤销和重做。我曾多次阅读文章,但仍不清楚它们是否相似或相互补充,是否可以一起使用。

状态模式可以与Memento设计模式相关还是一起使用?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-08-24 19:51:41

“状态模式”中的“状态”与记忆模式所支持的状态不同。状态模式的一个更好的名称是“模式模式”。有关更多细节,请参见其这一描述

现在,人们可以使用一个备忘录来描述包含模式模式的对象的状态,但这是它们唯一的特殊关系。

票数 3
EN

Stack Overflow用户

发布于 2014-07-31 01:26:56

Memento中的" state“是您保存以供以后检索的状态。有点像书签。例如,您可以保存一个视频位置,然后使用Memento模式返回到该位置。(国家由看守参与者保存。)

状态设计模式中的“状态”类似于状态机(或状态引擎)中的状态。它们的作用就像一个更大的背景,每个州都有一组有限的移动。因此,如果您处于"On“状态,则您的选项是保持在"On”状态或更改为"Off“状态。(状态模式没有条件语句!)

有关这两种方法的PHP示例,请参见:

http://www.php5dp.com/category/design-patterns/memento/

http://www.php5dp.com/category/design-patterns/state/

票数 3
EN

Stack Overflow用户

发布于 2013-08-26 02:00:43

要回答第一个问题,可以使用memento来重做,方法是创建第二个memento实例来存储重做的“状态”。但是,根据存储对象的状态有多复杂,使用Command模式提供撤销/重做功能通常“更便宜”。命令只用于存储要撤消/重做的更改,而memento可能需要存储整个状态。

理思的回答也是正确的,即来自国家模式的“状态”与纪念品存储的“状态”不同。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18420376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档