《設計模式之禪》 安全的備份管理

2021-09-25 12:36:56 字數 1238 閱讀 9632

備份應該是完全,不能被修改的,它保證資料的潔淨,避免資料汙染而使備份失去意義,也就是說需要縮小備份出的備忘錄的閱讀許可權,保證只能是發起人可讀就可以了,這時候我們就可以使用內建類

建立乙個空的介面imemento——什麼方法屬性都沒有的介面,然後再發起人originator類中建立乙個內建類,memento實現imemento介面,同時實現自己的業務邏輯

發起人角色

public class originator 

public void setstate(string state)

//建立乙個備忘錄

public imemento creatmemento(string state)

//恢復乙個備忘錄

public void restorememento(imemento memento)

//內建類

private class memento implements imemento

private string getstate()

private void setstate(string state) }}

內建類memento的訪問許可權全部都是private,除了發起人之外,其他人無法訪問到,如果要產生關聯關係,則可以利用空介面的公共訪問許可權

備忘錄的空介面

public inte***ce imemento
備忘錄管理者

public class caretaker 

public void setmemento(imemento memento)

}

這樣全部都通過介面訪問,也不能訪問它的屬性,但是安全是相對的,可以通過反射的方法修改相關資料

這裡 使用了一種新的設計方法「雙介面設計」,乙個類可以實現多個介面,在系統設計時,如果要考慮物件的安全問題,我們可以提供兩個介面,乙個是業務的正常介面,實現業務邏輯,稱為寬介面,另外乙個稱為空介面,什麼方法都沒有,其目的是提供給子系統外的模組訪問,比如容器物件,這個叫做窄介面,因為窄介面中沒有提供任何操縱資料的方法,相對來說是比較安全

最佳實踐

比如說不要把資料放到資料庫的臨時表作為快取備份資料,因為這會增加資料庫的壓力,所以應該使用備忘錄模式

設計模式之禪

設計模式之禪 大話面向初學者 禪面向有了一定基礎後提公升能力的讀者 看大話,只是看故事,只是感性認識,對於很多初學者而又沒專案經驗 或 閱讀 編寫量 的人來說,比較適合用於入門 看禪 主要是有一定的專案經驗 或 閱讀 編寫量 基礎上,而又大致閱讀過23種設計模式中的20種以上基本概念後,再深化提公升...

設計模式之禪之設計模式 門面模式

1 package com.yeepay.sxf.template18 2 3 寫信的業務類 4 隱藏在門面角色裡邊,不需要暴露太多5 author sxf6 7 8public inte ce iletterprocess view code 寫信的業務類的實現 1 package com.yee...

設計模式之禪之設計模式 橋梁模式

1 package com.yeepay.sxf.template24 2 3 實現化角色 4 相當於不同的業務邏輯,抽象出共有行為5 6 產品類7 author sxf8 9 10 public abstract class product view code 房子產品實現 1 package c...