圖解設計模式讀書筆記(十五)——Memento(備忘錄)模式
使用場景:
需要儲存狀態,以便將來執行redo/undo操作來恢復狀態。多用在棋牌類遊戲,書寫編輯類應用上。
基本思想:
在保證封裝性的基礎上,將類的屬性狀態在外部儲存起來。
保證封裝性的方式起始就是控制好memento類的可見性,即對於敏感資料,不使用public修飾,一般不用修飾符修飾,使得只能在同一個包中類能夠訪問。
類關係圖:
類圖比較簡單,Originator負責生產Memento,與Memento在同一個包中,能夠訪問Memento除了private外的所有方法屬性。Caretaker通過Originator生成並持有Memento物件,以便在某個時刻恢復memento狀態。
缺點:
由於需要備份,特別是多次備份時,資源消耗嚴重。
相關推薦
java程式設計思想讀書筆記 第十五章 泛型 (匿名內部類和擦除)
1.匿名內部類 泛型還可以應用於內部類以及匿名內部類。下面的例子使用匿名內部類實現了Generator介面: public class Customer { private static long counter = 1; private f
《Windows核心程式設計》讀書筆記二十五章 未處理異常,向量化異常處理與C++異常
第二十五章 未處理異常,向量化異常處理與C++異常 本章內容 25.1 UnhandledExceptionFilter函式詳解 25.2 即時除錯 25.3 電子表格示例程式 25.4 向量化異常和繼續處理程式 25.5 C++異常與結構化異常的比較 25.6 異常與
圖解設計模式讀書筆記(十五)——Memento(備忘錄)模式
使用場景: 需要儲存狀態,以便將來執行redo/undo操作來恢復狀態。多用在棋牌類遊戲,書寫編輯類應用上。 基本思想: 在保證封裝性的基礎上,將類的屬性狀態在外部儲存起來。 保證封裝性的方式起始就是控制好memento類的可見性,即對於敏感資料,不使用public修
圖解設計模式讀書筆記(十一)——Chain of Responsibility(責任鏈)模式
看到這個模式,最先想到的就是okhttp跟Android的事件處理機制了。 使用場景: 當功能出現分層,層級之間相對獨立這種情況,可考慮使用責任鏈模式。 類關係圖: Handler是一個抽象類,它擁有屬性next,型別是自身型別,並有處理請求但request方法。
圖解設計模式讀書筆記(十七)——Flyweight(輕量/享元)模式
使用場景: 物件可以複用/共享的情況,只new一次,然後將物件例項儲存起來,下次需要使用的時候,先檢視該物件是否已經存在,過存在則直接返回,不存在再new。 類關係圖 一般有一個Flyweig
圖解設計模式讀書筆記(七)——Strategy(策略)模式
顧名思義,策略模式一般應用在使用多種策略(演算法)的情況下,比如一些棋牌遊戲中,電腦會有多種策略去應付使用者,如入門級別,高手級別等。 策略模式將操作抽象成介面,具體的演算法由子類實現,有一個上下文環境Context來使用策略進行操作,context只需持有Strategy
圖解設計模式讀書筆記(九)——Decorator(裝飾)模式
應用場景: 最主要的應用場景就是當要增加一些基本功能的排列組合而產生的非常大量的功能時。 舉幾個例子: 1.文中的裝飾顯示的例子,有多種裝飾方式,比如在字串兩邊加 “|”,或者上下加一行“+------+”這種符號,文中只提到對單行的String的裝飾,還可能會有其他型
《Linux核心設計與實現》讀書筆記(十五)- 程序地址空間(kernel 2.6.32.60)
程序地址空間也就是每個程序所使用的記憶體,核心對程序地址空間的管理,也就是對使用者態程式的記憶體管理。 主要內容: 地址空間(mm_struct) 虛擬記憶體區域(VMA) 地址空間和頁表 1. 地址空間(mm_struct) 地址空間就是每個程序所能訪問的記憶體地址範圍。 這個地址
設計模式(十五)——橋接模式
不用 java 高層 ext 部分 獨立 lib 類型 ray 1.描述 將橋接部分與他的實現部分分離,是他們都可以獨立的變化。 2.模式的使用 ·抽象(Abstraction):是一個抽象類,該抽象類含有Implementor的聲明,即維護一個Implementor類型
《JavaScript高級程序設計》讀書筆記(五)引用類型
ron 新增 訪問 -s 字符 版本 組織 返回 obj 內容---使用對象---創建並操作數組---理解基本的JavaScript類型---使用基本類型和基本包裝類型 引用類型--引用類型的值(對象)是引用類型的一個實例--在ECMAScript中,引用類型是一種數據結構
js設計模式第五章 抽象工廠模式 讀書筆記
抽象工廠模式(Abstract Factory) 通過類的抽象使得業務適用於一個產品類簇的建立,而不負責建立某一類產品的例項。 JS中是沒有直接的抽象類的,因此我們需要在類的方法中丟擲錯誤來模擬抽象類,如果繼承的子類中沒有覆寫該方法而呼叫,就會丟擲錯誤。 //汽車抽象類 var Car = fu
Head First設計模式讀書筆記九 第十章 狀態模式
狀態模式例項 用Java設計糖果機吧 大致流程: 上圖中,有四種狀態:沒有硬幣,有硬幣,準備售出狀態以及糖果售罄狀態。而控制糖果機狀態轉換的則是各種動作(Action),這些動作分別是投入硬幣,超時判斷,轉動曲柄,判斷糖果決定是否售出。 GumballMac
一個故事貫穿設計模式(十五)策略模式
這裡記錄的是策略模式。 包結構: 類結構: 測試入口: package com.automannn.design_mode.strategy.test; import com.automannn.design_mode.strategy.OOP_
我與C++設計模式(十五)——觀察者模式
毋庸置疑,observer模式的地位是十分重要的,此處省略一些套話,那麼什麼是observer模式,他在幫我們解決什麼問題或者說他在面對什麼情形進行設計的。 observer模式要解決的問題是,建立一個一對多的依賴關係,並且做到當“一”變化的時候,“多”能夠及時作出相應的響
Java設計模式(十五)----觀察者模式
觀察者模式 一、定義 二、結構 具體案例 推模型和拉模型 三、Java提供的對觀察者模式的支援 Observer介面 Observable類 一、定義 觀察者模式是物件的行為模式,又叫釋出-訂閱(Publish/Subscribe)模式
JavaScript基礎(十五)多型、多繼承、設計模式
多型、多繼承、設計模式 多型 多繼承 單繼承 多繼承 設計模式 簡單工廠 安全工廠 抽象工廠 介面卡模式 多型 多型:同一個方法多種呼叫方式 例如:有一個需
雲端計算設計模式(十五)——管道和過濾器模式
雲端計算設計模式(十五)——管道和過濾器模式 分解,執行複雜處理成一系列可重複使用分立元件的一個任務。這種模式可以允許執行的處理進行部署和獨立縮放任務元素提高效能,可擴充套件性和可重用性。 背景和問題 一個應用程式可能需要執行各種關於它處理的資訊不同複雜的任務。一個簡單
設計模式(十五):職責鏈模式
優點: ① 職責鏈可簡化物件的相互連線,僅需要保持一個指向上級的路線 ② 分派職責時,有更多的靈活性,可以通過在執行時刻對該鏈進行動態的增加或修改,來增加或改變那些處理請求的那些職責。 缺點: ① 不能保證請求一定被接收。既然一個請求沒有明確的接收者,那麼
設計模式讀書筆記:Template Method(模板方法)
意圖: 定義一個操作中的演算法的骨架,而將一些步驟延遲到子類中。TemplateMethod 使得子類可以不改變一個演算法的結構即可重定義該演算法的某些特定步驟。 結構圖:來自 《23種設計模式 - 郗曉勇》 AbstractClass #include <ios
Deep Learning 讀書筆記(十五):Deep Learning from Temporal Coherence in Video
原來不是說好的不做視訊與影象改做NLP方向了嗎,怎麼這篇又是關於原來方面的。因為突然想起了原來的一個點子,是關於卷積神經網路學習演算法的,希望通過這個演算法使得CNN能夠對視訊資料進行學習。我是希望先琢磨下這個想法的可行性,然後把它交給師弟師妹們來做,也算是盡