日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

23种设计模式C++源码与UML实现--原型模式

發(fā)布時間:2025/3/15 c/c++ 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 23种设计模式C++源码与UML实现--原型模式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

原型模式

一個復(fù)雜對象,具有自我復(fù)制功能,統(tǒng)一一套接口。

原型模式主要面對的問題是:某些結(jié)構(gòu)復(fù)雜的對象的創(chuàng)建工作,由于需求的變化,這些對象進場面對著劇烈的變化,但是他們卻擁有比較一致的接口。

原型模式(Prototype Pattern)是用于創(chuàng)建重復(fù)的對象,同時又能保證性能。這種類型的設(shè)計模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對象的最佳方式。

這種模式是實現(xiàn)了一個原型接口,該接口用于創(chuàng)建當前對象的克隆。當直接創(chuàng)建對象的代價比較大時,則采用這種模式。例如,一個對象需要在一個高代價的數(shù)據(jù)庫操作之后被創(chuàng)建。我們可以緩存該對象,在下一個請求時返回它的克隆,在需要的時候更新數(shù)據(jù)庫,以此來減少數(shù)據(jù)庫調(diào)用。

角色和職責(zé)

從UML圖中能看出,客戶端是面向抽象類進行編程的,實現(xiàn)了客戶端和具體類ConcretePrototype之間的解耦合

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Wmjlnxms-1604720135838)(picture/image-20201107110421278.png)]

原型模式實現(xiàn)代碼如下,真實的功能其實相當于一個深Copy

#include <iostream> #include <string> extern "C"{ #include <string.h> }using namespace std; // 原型模式簡單來說就是自己實現(xiàn)了了對自己的深Copy 也就是copy函數(shù)的實現(xiàn)過程 class Person { public:virtual Person* clone() = 0;virtual void println() = 0; };class GoPherProgrammer : public Person { public:GoPherProgrammer(){m_name = "";m_age = 0;m_resume = NULL;setResume((char *)"aaaa");}GoPherProgrammer(string name, int age){m_name = name;m_age = age;m_resume = NULL;setResume((char *)"aaaa");}void setResume(char *pStr){if(m_resume !=NULL){delete m_resume;}m_resume = new char[strlen(pStr)+1];strcpy(m_resume, pStr);}virtual void println(){cout << "m_name:" << m_name << " m_age:" << m_age << " m_resume:" << m_resume << endl;}virtual Person *clone(){GoPherProgrammer *tmp = new GoPherProgrammer;*tmp = *this;return tmp;}private:string m_name;int m_age;char *m_resume; };int main(int argc, char const *argv[]) {Person *c1 = new GoPherProgrammer("xiaohua", 32);c1->println();Person *c2 = c1->clone();c2->println();cout << "simple factory test" << endl;return 0; }

總結(jié)

以上是生活随笔為你收集整理的23种设计模式C++源码与UML实现--原型模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。