備忘錄模式分析、結構圖及基本代碼,備忘錄模式結構圖
定義
在不破壞封裝性的前提下,捕獲一個對象的內部狀態,並在該對象之外儲存這個狀態。這樣以後就可將該對象恢複到原先儲存的狀態。
結構圖:
Originator(發起人):負責建立一個備忘錄Memento,用以記錄當前時刻它的內部狀態,並可使用備忘錄恢複內部狀態。Originator可根據需要決定Memento儲存Originator的哪些內部狀態。
Memento(備忘錄):負責儲存Originator對象的內部狀態,並可防止Originator以外的其他對象訪問備忘錄Memento。備忘錄有兩個介面,Caretaker只能看到備忘錄的窄介面,它只能將備忘錄傳遞給其他對象。Originator能夠看到一個寬介面,允許它訪問返回到先前狀態所需要的所有資料。
Caretaker(管理者):負責儲存好備忘錄Memento,不能對備忘錄的內容進行操作或檢查。
適用地方:備忘錄模式比較適用於功能比較複雜的,但需要維護或記錄屬性曆史的類,或者需要儲存的屬性只是眾多屬性中的一小部分時,Originator可以根據儲存的Memento資訊還原到前一狀態。
基本代碼:
using System;
using System.Collections.Generic;
using System.Text;
namespace 備忘錄模式
{
class Program
{
static void Main(string[] args)
{
Originator o = new Originator();
o.State = "On";
o.Show();
Caretaker c = new Caretaker();
c.Memento = o.CreateMemento();
o.State = "Off";
o.Show();
o.SetMemento(c.Memento);
o.Show();
Console.Read();
}
}
class Originator
{
private string state;
public string State
{
get { return state; }
set { state = value; }
}
public Memento CreateMemento()
{
return (new Memento(state));
}
public void SetMemento(Memento memento)
{
state = memento.State;
}
public void Show()
{
Console.WriteLine("State=" + state);
}
}
class Memento
{
private string state;
public Memento(string state)
{
this.state = state;
}
public string State
{
get { return state; }
}
}
class Caretaker
{
private Memento memento;
public Memento Memento
{
get { return memento; }
set { memento = value; }
}
}
}
你熟悉的設計模式有什?寫出單例模式的實現代碼
一共23種設計模式!
引用《軟體秘笈-設計模式那點事》書籍:
按照目的來分,設計模式可以分為建立型模式、結構型模式和行為型模式。
建立型模式用來處理對象的建立過程;結構型模式用來處理類或者對象的組合;行為型模式用來對類或對象怎樣互動和怎樣分配職責進行描述。
建立型模式用來處理對象的建立過程,主要包含以下5種設計模式:
Factory 方法模式(Factory Method Pattern)
抽象原廠模式(Abstract Factory Pattern)
建造者模式(Builder Pattern)
原型模式(Prototype Pattern)
單例模式(Singleton Pattern)
結構型模式用來處理類或者對象的組合,主要包含以下7種設計模式:
適配器模式(Adapter Pattern)
橋接模式(Bridge Pattern)
組合模式(Composite Pattern)
裝飾者模式(Decorator Pattern)
面板模式(Facade Pattern)
享元模式(Flyweight Pattern)
代理模式(Proxy Pattern)
行為型模式用來對類或對象怎樣互動和怎樣分配職責進行描述,主要包含以下11種設計模式:
責任鏈模式(Chain of Responsibility Pattern)
命令模式(Command Pattern)
解譯器模式(Interpreter Pattern)
迭代器模式(Iterator Pattern)
中介者模式(Mediator Pattern)
備忘錄模式(Memento Pattern)
觀察者模式(Observer Pattern)
狀態模式(State Pattern)
策略模式(Strategy Pattern)
模板方法模式(Template Method Pattern)
訪問者模式(Visitor Pattern)
單例模式實現1:
public class Singleton {
// 類共用執行個體對象
private static Singleton singleton = null;
// 私人構造方法
private Singleton() {
System.out.println("-- this is Singleton!!!");
}
// 獲得單例方法
public synchronized static Singleton getInstance() {
// 判斷 共用對象是否為null ,如何為null則new一個新對象
if (singleton == null) {
singleton = new Singleton();
}
return singleton;
}
}
單例模式實現2:
public class Singleton {
// 類共用執行個體對象 執行個體化
private s......餘下全文>>
軟體架構模式基本概念及三者不同
在做軟體架構設計時,根據不同的抽象層次可分為三種不同層次的模式:架構模式(Architectural Pattern)、設計模式(Design Pattern)、代碼模式(Coding Pattern)。
架構模式是一個系統的高層次策略,涉及到大尺度的組件以及整體性質和力學。架構模式的好壞可以影響到總體布局和架構性結構。
設計模式是中等尺度的結構策略。這些中等尺度的結構實現了一些大尺度組件的行為和它們之間的關係。模式的好壞不會影響到系統的總體布局和總體架構。設計模式定義出子系統或組件的微觀結構。
代碼模式(或成例)是特定的範例和與特定語言有關的編程技巧。代碼模式的好壞會影響到一個中等尺度組件的內部、外部的結構或行為的底層細節,但不會影響到一個組件或子系統的中等尺度的結構,更不會影響到系統的總體布局和大尺度架構。
架構模式(Architectural Pattern)
一個架構模式描述軟體系統裡的基本的結構組織或綱要。架構模式提供一些事先定義好的子系統,指定它們的責任,並給出把它們組織在一起的法則和指南。稱之為系統模式。
•MVC模式,一個架構模式常常可以分解成很多個設計模式的聯合使用。MVC模式常常包括調停者(Mediator)模式、策略(Strategy)模式、合成(Composite)模式、觀察者(Observer)模式等。
•Layers(分層)模式,有時也稱Tiers模式
•Blackboard(黑板)模式
•Broker(中介)模式
•Distributed Process(分散過程)模式
•Microkernel(微核)模式
架構模式常常劃分成如下的幾種:
一、 模組結構(From Mud to Structure)型。協助架構師將系統合理劃分,避免形成一個對象的海洋。包括Layers(分層)模式、Blackboard(黑板)模式、Pipes/Filters(管道/過濾器)模式等。
二、分散系統(Distributed Systems)型。為分散式系統提供完整的架構設計,包括像Broker(中介)模式等。
三、人機互動(Interactive Systems)型,支援包含有人機互動介面的系統的架構設計,例子包括MVC(Model-View-Controller)模式、PAC(Presentation-Abstraction-Control)模式等。
四、Adaptable Systems型,支援應用系統適應技術的變化、軟體功能需求的變化。如Reflection(反射)模式、Microkernel(微核)模式等。
設計模式(Design Pattern)
一個設計模式提供一種提煉子系統或軟體系統中的組件的,或者它們之間的關係的綱要設計。設計模式描述普遍存在的在相互連訊的組件中重複出現的結構,這種結構解決在一定的背景中的具有一般性的設計問題。
設計模式常常劃分成不同的種類,常見的種類有:
建立型設計模式,如Factory 方法(Factory Method)模式、抽象工廠(Abstract Factory)模式、原型(Prototype)模式、單例(Singleton)模式,建造(Builder)模式等
結構型設計模式,如合成(Composite)模式、裝飾(Decorator)模式、代理(Proxy)模式、享元(Flyweight)模式、門面(Facade)模式、橋樑(Br......餘下全文>>