C 原型模式

2021-10-01 21:49:10 字數 1553 閱讀 1535

原型模式和建造者模式、工廠方法模式一樣,都屬於建立型模式的一種。簡單的來說,我們使用原型模式,就是為了建立物件。但是,在以下場景下,使用原型模式是最好的選擇:

1.當我們的物件型別不是開始就能確定的,而這個型別是在執行期確定的話,那麼我們通過這個型別的物件轉殖出乙個新的物件比較容易一些;

2.有的時候,我們需要乙個物件在某個狀態下的副本,此時,我們使用原型模式是最好的選擇;例如:乙個物件,經過一段處理之後,其內部的狀態發生了變化;這個時候,我們需要乙個這個狀態的副本,如果直接new乙個新的物件的話,但是它的狀態是不對的,此時,可以使用原型模式,將原來的物件拷貝乙個出來,這個物件就和之前的物件是完全一致的了;

3.當我們處理一些比較簡單的物件時,並且物件之間的區別很小,可能就幾個屬性不同而已,那麼就可以使用原型模式來完成,省去了建立物件時的麻煩了;

4.有的時候,建立物件時,建構函式的引數很多,而自己又不完全的知道每個引數的意義,就可以使用原型模式來建立乙個新的物件,不必去理會建立的過程,讓建立過程見鬼去吧。

所以,在上述的的情況下,在設計的時候,適當的考慮一下原型模式,減少對應的工作量,減少程式的複雜度,提高效率。

#include

using

namespace std;

#include

class

resume

~resume()

virtual

void

setname

(string s_name)=0

;virtual

void

setage

(int m_age)=0

;virtual

void

setwork

(string time,string company)=0

;virtual resume*

clone()

=0;virtual

void

show()

=0;}

;class

person

:public resume

void

setage

(int m_age)

void

setwork

(string time,string company)

resume*

clone()

void

show()

public

: string name;

int age;

string time;

string company;};

intmain()

原型模式作為建立型模式中最特殊的乙個模式,具體的建立過程,是由物件本身提供,這樣我們在很多的場景下可以很方便的快速的構建新的物件。但是,原型模式的最大缺點是繼承原型的子類都要實現clone操作,這個是很困難的。例如,當所考慮的類已經存在時就難以新增clone操作。當內部包括一些不支援拷貝或者有迴圈引用的物件時,實現轉殖可能也會很困難。說以說,每一種設計模式都有它的優點和缺點,在設計的時候,我們需要進行權衡各方面的因素,揚長避短。

C 原型模式

原型模式 prototype 用原型例項制定建立物件的種類,並通過拷貝這些原型建立新的物件。淺複製 using system using system.collections.generic using system.linq using system.text using system.threa...

C 設計模式 原型模式

定義 用原型 prototype 例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。結構 理解 1.prototype 是原型基類,提供clone 純虛方法,它根據不同的派生類來轉殖不同的物件。2.concreteprototype 是原型具體類。實現clone 方法,轉殖自己,返回轉殖後的...

c 設計模式(原型模式)

good 從乙個物件再建立另外乙個可定製的物件,而無需知道任何建立的細節。並能提高建立的效能。說白了就copy技術,把乙個物件完整的copy出乙份。例 include include include using namespace std class prototype 抽象基類 prototype...