原型模式
乙個複雜物件,具有自我複製功能,統一一套介面。
原型模式主要面對的問題是:某些結構複雜的物件的建立工作,由於需求的變化,這些物件進場面對著劇烈的變化,但是他們卻擁有比較一致的介面。
原型模式(prototype pattern)是用於建立重複的物件,同時又能保證效能。這種型別的設計模式屬於建立型模式,它提供了一種建立物件的最佳方式。
這種模式是實現了乙個原型介面,該介面用於建立當前物件的轉殖。當直接建立物件的代價比較大時,則採用這種模式。例如,乙個物件需要在乙個高代價的資料庫操作之後被建立。我們可以快取該物件,在下乙個請求時返回它的轉殖,在需要的時候更新資料庫,以此來減少資料庫呼叫。
角色和職責
從uml
圖中能看出,客戶端是面向抽象類進行程式設計的,實現了客戶端和具體類concreteprototype
之間的解耦合
[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-wmjlnxms-1604720135838)(picture/image-20201107110421278.png)]
原型模式實現**如下,真實的功能其實相當於乙個深copy
#include
#include
extern
"c"using
namespace std;
// 原型模式簡單來說就是自己實現了了對自己的深copy 也就是copy函式的實現過程
class
person
;class
gopherprogrammer
:public person
gopherprogrammer
(string name,
int age)
void
setresume
(char
*pstr)
m_resume =
newchar
[strlen
(pstr)+1
];strcpy
(m_resume, pstr);}
virtual
void
println()
virtual person *
clone()
private
: string m_name;
int m_age;
char
*m_resume;};
intmain
(int argc,
char
const
*ar**)
23種設計模式C 原始碼與UML實現 組合模式
組合模式 composite模式也叫做組合模式,是構造型的設計模式之一。通過遞迴的手段構造樹形的物件結構,並可以通過乙個物件來訪問整個物件樹。component樹形結構的節點抽象 leaf樹形結構的葉節點 composite樹形結構的枝節點 適用於 單個物件的使用具有一致性,將物件組合成樹形結構表示...
23種設計模式C 原始碼與UML實現 解釋模型
解釋模型 一些應用提供了內建的指令碼或者巨集語言來讓使用者可以定義它們能夠在系統中進行的操作。interpreter模式的目的就是使用乙個直譯器為使用者提供乙個一門定義語言的語法表示的直譯器,然後通過這個直譯器來解釋語言中的句子。interpreter模式提供了這樣乙個實現直譯器的框架。interp...
23種設計模式C 原始碼與UML實現 迭代器模式
迭代器模式 iterator模式也叫迭代模式,是行為模式之一,他把對容器種包含的內部物件的訪問委讓給外部類,使用iterator按順序進行遍歷訪問的設計模式。在使用iterator模式之前,首先應該明白iterator模式是用來解決什麼問題的。或者說如果不使用iterator模式會存在什麼問題。由容...