pengpenglin
人,必須選擇一種生活方式并有勇氣堅持下去
BlogJava
首頁
新隨筆
新文章
聯系
聚合
管理
posts - 262, comments - 221, trackbacks - 0
設計模式總結-Memento模式(一)
一、Memento模式的目的:
memento是一個
保存另外一個對象內部狀態拷貝
的對象.這樣以后就可以將該對象
恢復到原先保存的狀態
.
二、Memento模式的簡單例子:
下面的例子來源于Jdon網站的《GoF設計模式系列》的《Memento模式》,雖然簡單卻形象地表明了Memento模式的應用
public
class
Originator
{
private
int
number;
private
File file
=
null
;
public
Originator()
{}
//
創建一個Memento,將自身作為參數傳入
public
Memento getMemento()
{
return
new
Memento(
this
);
}
//
從Memento中取出保存的數據,恢復為原始狀態
public
void
setMemento(Memento m)
{
number
=
m.number;
file
=
m.file;
}
}
private
class
Memento
implements
java.io.Serializable
{
private
int
number;
private
File file
=
null
;
public
Memento( Originator o)
{
number
=
o.number;
file
=
o.file;
}
}
三、Memento模式的特點:
在需要提供保存、恢復對象狀態的類中,必須提供兩個方法:
.保存對象當前狀態方法:將對象自身(this)作為參數傳入,創建備忘錄。
.恢復對象之前狀態的方法:取出備忘錄/接收一個備忘錄對象,從中獲取對象之前的狀態
模式的缺點是耗費大,如果內部狀態很多,再保存一份,無意要浪費大量內存.
注意:Memento模式保存的是操作前對象的狀態,而不是操作后對象的狀態;否則就沒辦法做恢復了
-------------------------------------------------------------
生活就像打牌,不是要抓一手好牌,而是要盡力打好一手爛牌。
posted on 2008-03-22 17:56
Paul Lin
閱讀(2206)
評論(0)
編輯
收藏
所屬分類:
模式與重構
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
設計模式總結-Visitor模式
設計模式總結-Strategy模式
設計模式總結-State模式
設計模式總結-Command模式
設計模式總結-Memento模式(二)
設計模式總結-Memento模式(一)
設計模式總結-Observer模式
設計模式總結-Flyweight模式
設計模式總結-Bridge模式
設計模式總結-Decorator模式(二)
Copyright ©2025 Paul Lin Powered by:
博客園
模板提供:
滬江博客
<
2008年3月
>
日
一
二
三
四
五
六
24
25
26
27
28
29
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(21)
給我留言
查看公開留言
查看私人留言
隨筆分類
J2EE 框架(9)
J2EE基礎(4)
J2SE(43)
Java 工具(5)
Oracle Concept(4)
Oracle SQL/PLSQL(9)
Oracle 開發(13)
Oracle 管理(4)
Oracle 調優
Oracle 錯誤診斷
RoR(19)
UML(3)
Unix / Linux(13)
Web基礎(19)
其它技術(7)
感悟(3)
雜項(7)
架構與性能(8)
模式與重構(19)
灌水(8)
電影與音樂(16)
走過的路(1)
軟件過程與軟件方法(3)
陽光戶外(2)
項目管理(36)
隨筆檔案
2012年2月 (3)
2011年11月 (4)
2011年10月 (1)
2011年9月 (2)
2011年8月 (2)
2011年7月 (5)
2011年6月 (3)
2011年5月 (1)
2011年4月 (1)
2011年3月 (3)
2011年1月 (1)
2010年12月 (1)
2010年11月 (5)
2010年10月 (3)
2010年9月 (1)
2010年7月 (1)
2010年6月 (1)
2010年5月 (4)
2010年4月 (9)
2010年3月 (19)
2010年2月 (8)
2010年1月 (3)
2009年12月 (34)
2009年11月 (1)
2009年10月 (2)
2009年7月 (4)
2009年6月 (5)
2009年5月 (3)
2009年4月 (2)
2009年3月 (1)
2009年2月 (5)
2009年1月 (5)
2008年12月 (13)
2008年11月 (4)
2008年10月 (1)
2008年9月 (6)
2008年8月 (5)
2008年7月 (3)
2008年6月 (31)
2008年5月 (10)
2008年4月 (9)
2008年3月 (7)
2008年2月 (4)
2008年1月 (19)
BlogJava熱點博客
BeanSoft
Jack.Wang
如坐春風
詩特林
鄭暉
銀河使者
阿密果
隔葉黃鶯
好友博客
無羽蒼鷹
搜索
最新評論
1.?re: 【Java基礎專題】編碼與亂碼(01)---編碼基礎[未登錄]
666666666666666666666這幾天正在做個類似工程編碼出現錯誤
--李
2.?re: 【Java基礎專題】IO與文件讀寫---使用Apache commons IO簡化文件讀寫
不錯
--阿斯蘭
3.?re: 【Java基礎專題】編碼與亂碼(03)----String的toCharArray()方法
多謝分享
--thx
4.?re: 【Java基礎專題】編碼與亂碼(05)---GBK與UTF-8之間的轉換
評論內容較長,點擊標題查看
--karl
5.?re: 【Java基礎專題】編碼與亂碼(01)---編碼基礎[未登錄]
謝謝,幫了我大忙!
--小龍
閱讀排行榜
1.?Oracle中如何插入特殊字符:& 和 ' (多種解決方案)(48445)
2.?getOutputStream() has already been called for this response的解決方法(43350)
3.?【Java基礎專題】編碼與亂碼(05)---GBK與UTF-8之間的轉換(37030)
4.?360安全衛士誤刪audiosrv.dll文件造成系統無聲的解決方案(21266)
5.?Java中讀取字節流并按指定編碼轉換成字符串的方法(17317)
評論排行榜
1.?360安全衛士誤刪audiosrv.dll文件造成系統無聲的解決方案(33)
2.?【原】Oracle開發專題之:時間運算(11)
3.?【Java基礎專題】編碼與亂碼(05)---GBK與UTF-8之間的轉換(11)
4.?getOutputStream() has already been called for this response的解決方法(10)
5.?【原】Oracle開發專題之:分析函數(OVER)(8)
主站蜘蛛池模板:
亚洲一区无码中文字幕
|
一本大道一卡二大卡三卡免费
|
久久黄色免费网站
|
亚洲色中文字幕无码AV
|
国产免费久久精品99久久
|
亚洲毛片av日韩av无码
|
欧亚一级毛片免费看
|
亚洲精品无码你懂的网站
|
一级女人18片毛片免费视频
|
久久亚洲中文字幕精品一区四
|
一级女性全黄久久生活片免费
|
免费a级毛片18以上观看精品
|
日本特黄特色AAA大片免费
|
国产乱色精品成人免费视频
|
青青青视频免费观看
|
亚洲国产精品碰碰
|
免费网站观看WWW在线观看
|
亚洲bt加勒比一区二区
|
1024免费福利永久观看网站
|
亚洲一级特黄特黄的大片
|
日韩高清在线高清免费
|
一级毛片免费毛片毛片
|
亚洲三级电影网站
|
久久久久国产精品免费免费搜索
|
亚洲美国产亚洲AV
|
国产亚洲美女精品久久久2020
|
精品四虎免费观看国产高清午夜
|
亚洲A∨精品一区二区三区下载
|
国产伦一区二区三区免费
|
四虎永久免费地址在线观看
|
男女一边摸一边做爽的免费视频
|
亚洲一区二区三区高清
|
成人免费视频88
|
av午夜福利一片免费看久久
|
亚洲精品在线播放
|
国产成人精品免费直播
|
中文字幕无码免费久久
|
亚洲色大成网站www永久男同
|
中文字幕在线亚洲精品
|
国产99视频精品免费观看7
|
ssswww日本免费网站片
|