C 設計模式2 原型模式Prototype

2021-09-19 16:19:08 字數 3591 閱讀 2363

用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。

prototype原型模式是一種建立型設計模式,prototype模式允許乙個物件再建立另外乙個可定製的物件,

根本無需知道任何如何建立的細節,

工作原理是:通過將乙個原型物件傳給那個要發動建立的物件,這個要發動建立的物件通過請求原型物件拷貝它們自己來實施建立。

它主要面對的問題是:「某些結構複雜的物件」的建立工作;由於需求的變化,這些物件經常面臨著劇烈的變化,但是他們卻擁有比較穩定一致的介面。

客戶(client)角色:客戶端類向原型管理器提出建立物件的請求。

①抽象原型(prototype)角色:

這是乙個抽象角色,通常由乙個c#介面或抽象類實現。

②具體原型(concrete prototype)角色:

被複製的物件。此角色需要實現抽象的原型角色所要求的介面。

③原型管理器(prototype manager)角色:

建立具體原型類的物件,並記錄每乙個被建立的物件。

/// 原型抽象類 -=> 對應於抽象原型(prototype)角色

class

prototype;    virtual ~prototype( );    virtual prototype* clone

( )const

= 0;  // 拷貝函式,原型模式的精髓所在

virtual

void

show

( )const

= 0;                // 顯示當前資訊

protected :    char *m_name;               // 名字};/// 原型類a -=> 對應於具體原型(concrete prototype)角色:

class

prototypea :

public prototype     else         }    prototypea(const prototypea &prototype)               // 實現深拷貝     virtual ~prototypea( )                 // 虛析構函式     prototype* clone

( )const

// 拷貝函式,原型模式的精髓所在

void

show

( )const

// 顯示當前函式資訊

//protected :

// char *m_name;};/// 原型類b -=> 對應於具體原型(concrete prototype)角色:

class

prototypeb :

public prototype    else     }    prototypeb(const prototypeb &prototype)               //     virtual ~prototypeb( )                // 虛析構函式     prototype* clone

( )const

// 拷貝函式,原型模式的精髓所在

// 獲取名字的函式

void

show

( )const

// 顯示當前函式資訊

//protected :

// int  *m_no;};int

main

()用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。

prototype原型模式是一種建立型設計模式,prototype模式允許乙個物件再建立另外乙個可定製的物件,

根本無需知道任何如何建立的細節,

工作原理是:通過將乙個原型物件傳給那個要發動建立的物件,這個要發動建立的物件通過請求原型物件拷貝它們自己來實施建立。

它主要面對的問題是:「某些結構複雜的物件」的建立工作;由於需求的變化,這些物件經常面臨著劇烈的變化,但是他們卻擁有比較穩定一致的介面。

客戶(client)角色:客戶端類向原型管理器提出建立物件的請求。

①抽象原型(prototype)角色:

這是乙個抽象角色,通常由乙個c#介面或抽象類實現。

②具體原型(concrete prototype)角色:

被複製的物件。此角色需要實現抽象的原型角色所要求的介面。

③原型管理器(prototype manager)角色:

建立具體原型類的物件,並記錄每乙個被建立的物件。

/// 原型抽象類 -=> 對應於抽象原型(prototype)角色

class

prototype;    virtual ~prototype( );    virtual prototype* clone

( )const

= 0;  // 拷貝函式,原型模式的精髓所在

virtual

void

show

( )const

= 0;                // 顯示當前資訊

protected :    char *m_name;               // 名字};/// 原型類a -=> 對應於具體原型(concrete prototype)角色:

class

prototypea :

public prototype     else         }    prototypea(const prototypea &prototype)               // 實現深拷貝     virtual ~prototypea( )                 // 虛析構函式     prototype* clone

( )const

// 拷貝函式,原型模式的精髓所在

void

show

( )const

// 顯示當前函式資訊

//protected :

// char *m_name;};/// 原型類b -=> 對應於具體原型(concrete prototype)角色:

class

prototypeb :

public prototype    else     }    prototypeb(const prototypeb &prototype)               //     virtual ~prototypeb( )                // 虛析構函式     prototype* clone

( )const

// 拷貝函式,原型模式的精髓所在

// 獲取名字的函式

void

show

( )const

// 顯示當前函式資訊

//protected :

// int  *m_no;};int

main

()

C 設計模式2 原型模式Prototype

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。prototype原型模式是一種建立型設計模式,prototype模式允許乙個物件再建立另外乙個可定製的物件,根本無需知道任何如何建立的細節,工作原理是 通過將乙個原型物件傳給那個要發...

C 設計模式 原型模式

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

c 設計模式(原型模式)

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