登录  | 加入社区

黑狼游客您好!登录后享受更多精彩

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

查看: 963|回复: 0

19-备忘录模式PHP实现

[复制链接]

364

主题

11

帖子

0

现金

黑狼菜鸟

Rank: 1

积分
24
发表于 2018-4-7 00:17:19 | 显示全部楼层 |阅读模式 来自 美国
择要:本文用一个实例场景形貌Gof 23计划模式中的备忘录(Memento)模式,并用PHP步伐代码给予实现,同时也给出实当代码的UML模子。
关键字:Gof 23计划模式备忘录模式PHP
Memento Pattern basedon PHP
Abstract:This paper gives a scene example to describe theuse of Memento Pattern of Gof 23 Design Pattern, and achieves the example by PHP,at the same time, gives the UML model of realization of the example.
Key word:Gof 23; DesignPattern; Memento Pattern  PHP
1.尺度界说
备忘录(Memento)模式尺度界说:在不粉碎封装性的条件下,捕捉一个对象的内部状态,并在该对象之外生存这个状态。如许以后就可将该对象规复到原先生存的状态。
2.分析和阐明
备忘录(Memento)模式属于对象举动型模式。备忘录对象是一个用来存储别的一个对象内部状态的快照的对象。备忘录模式的用意是在不粉碎封装的条件下,将一个对象的状态捉住,并外部化,存储起来,从而可以在未来符合的时间把这个对象还原到存储起来的状态。
Memento布局如图1所示,其脚色包罗发起人(Originator)脚色和负责人(Caretaker)脚色。
y7w3Zon9zb8z386d.jpg


图1备忘录模式布局
发起人(Originator)脚色,发起人脚色有如下的责任:①创建一个含有当前的内部状态的备记载对象。②利用备忘录对象存储其内部状态。
负责人(Caretaker)脚色,负责人脚色有如下的责任:①负责生存备忘录对象。②不查抄备忘录对象的内容。
3应用场景举例
公司向导在每周周一都要召开项目集会,每次集会后都有集会纪要。集会纪要都要把现阶段项目环境汇总起来。这些项目环境就是备忘录,上面偶然间戳这个标记。
在这里可以把Meeting类明白为发起人(Originator)脚色。Caretaker类是负责人(Caretaker)脚色。实在现类图如图3所示。Memento类与Caretaker类的关系是聚合关系,即Caretaker类拥有多个Memento类。
xjdCaEDf08f520Pm.jpg


图2备忘录模式类图
3.PHP的实现步伐代码
PHP步伐实现重要包罗Meeting类,Caretaker类和Memento类等3个类。其关系如图2所示。下面分别列出这3个类的步伐代码,末了列出测试代码并表现输出效果。
备忘录模式测试类输出效果如下所示:
参考文献
[1] E.Gamma, R.Helm, R.Johnson, andVlissides. Design Patterns Elements of Reusable Object Oriented Software. Addison-Wesley,1995
[2] E.Gamma, R.Helm, R.Johnson, andVlissides.著,李英军等译,计划模式:可复用面向对象软件的底子,北京:机器工业出书社.2000.9.
[3]嫡科技,PHP从入门到醒目(第3版),北京:清华大学出书社.2012.5.
[4] [美] Larry Ullman著,季国飞朱佩德译,深入明白PHP:高级本领、面向对象与焦点技能(原书第3版),北京:机器工业出书社.2014.1.
[5] PHP官方网站:http://php.net/.
[6] PHP教程http://www.runoob.com/php/php-oop.html.
[7] PHP面向对象教程http://www.cnblogs.com/xiaochaohuashengmi/archive/2010/09/10/1823042.html




上一篇:什么是PHP?为什么又要开班?
下一篇:【视频教程】Python的模块创建和利用
您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

 

QQ|申请友链|小黑屋|手机版|Hlshell Inc. ( 豫ICP备16002110号-5 )

GMT+8, 2024-5-19 02:47 , Processed in 0.144479 second(s), 47 queries .

HLShell有权修改版权声明内容,如有任何爭議,HLShell將保留最終決定權!

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表