通俗易懂設計模式解析 原型模式

2022-01-14 22:42:08 字數 2476 閱讀 7565

前面幾章我們介紹了建立型設計模式的部分內容,今天我要說的是建立型設計模式中最後乙個——原型模式,原型模式是建立型模式中的一種較為特殊的模式,有個最大的特點是轉殖乙個現有的物件,在我們日常軟體系統開發中,某些物件的建立new即為複雜,而且我們需要使用多個相同的例項,這樣如果我們依舊使用new去進行建立。就會增加系統的複雜度和增加**之間的耦合度。但是我們使用前面介紹的工廠模式的話,隨著產品型別的增多,子類也會隨之增多。維護**的難度也就會越來越大,所以這裡暫時不適合使用工廠模式。由於例項都是一樣的,型別相同。但是例項的引數和狀態可能不同。這裡有乙個物件,然後再結合我們今天要講述的原型模式。可以通過乙個原型物件,轉殖拷貝出許多其他相同的物件來。

在面對軟體系統設計的過程中,會面臨著」複雜物件」的建立,然而物件可能會由於需求的變動而進行變動。那麼我們又需要保持介面的穩定性。這時如何保證應對這種變化呢?

建立型模式一般是用來建立乙個新的物件,然後我們使用這個物件完成一些物件的操作,我們通過原型模式可以快速的建立乙個物件而不需要提供專門的new()操作就可以快速完成物件的建立,這無疑是一種非常有效的方式,快速的建立乙個新的物件。

使用原型例項指定建立物件的種類,然後通過拷貝這些原型來建立新的物件。

在原型模式中包含的組成部分較少:

抽象原型類:原型類,宣告一需要實現的介面及clone自身的方法

具體原型類:實現其餘介面及clone自身的方法

我們來看這麼乙個示例,我記得小時候上課的時候有時候就想著出去玩,就望著窗戶發呆。又出不去。就想自己可以分身就好了。就可以乙個留在教室學習,乙個出去玩耍,學習可以一次性學習多門功課,玩耍可以一次玩多個遊戲。這樣就什麼都沒有耽誤,多好呀。當然也只是想想,實現這個暫時是不可能的了。雖然說現實中沒辦法實現了。剛好今天講原型模式,就借用這個示例來講解原型模式到底是如何使用的吧:

namespace

prototype_pattern

#region 抽象原型類**********=

public

abstract

class

prototype

#endregion

#region 具體原型類——讀書學習 **********===

public

class

learnprototype : prototype

public

override

void action(string

things)

public

override

prototype clone()

}#endregion

#region 具體原型類——外出玩耍 **********===

public

class

playprototype : prototype

public

override

void action(string

things)

public

override

prototype clone()

}#endregion

}

class

program

}

1、在處於資源優化的時候,減少new類的初始化的數量以減少資源消耗

2、乙個物件多個利用修改,將乙個物件提供給多個呼叫者使用。

1、原型模式向客戶端隱藏了建立物件的複雜性,提供clone進行淺拷貝

2、原型類允許動態的增加或減少產品類

3、產品類不需要先確定產品的等級結構,原型模式適用於任何等級結構

1、每乙個類都需要配備乙個轉殖方法

2、配備轉殖方法需要對類的功能進行通盤考慮,這對於全新的類不是很難,但對於已有的類不一定很容易,特別當乙個類引用不支援序列化的間接物件,或者引用含有迴圈結構的時候。

到這裡建立型的五個設計模式我們就暫時的介紹完畢了。 在學習設計模式的時候需要多思考,多斟酌。最好在重構之時考慮加入設計模式。保證設計模式發揮最大的用處。到這裡建立型模式講完了。單例模式關注的是物件例項個數的問題。控制物件僅有乙個例項,全域性訪問呼叫。工廠模式和抽象工廠模式解決的是」單個物件」及」一系列物件」的問題。而建造者模式關注解決的是」物件部分」的問題。今天講的原型模式可以算的上乙個特殊的工廠模式。原型模式一般極少單獨使用,一般是配合工廠模式一起使用的。接下來的時間中給大家帶來的是結構型的設計模式解析

平凡人生要用平凡的心去對待,你的人生將會更精彩。

c#設計模式系列目錄

通俗易懂設計模式解析 迭代器模式

系統 今天我們一起看看行為模式中的迭代器模式,迭代是重複反饋過程的活動,其目的通常是為了接近並到達所需的目標或結果。在系統開發中簡單說可以理解成遍歷。這種模式用於順序訪問集合物件的元素,不需要知道集合物件的底層或者內部表示。在系統開發中,集合物件內部表示各不相同。底層構造也盡不相同。對於這些物件,我...

通俗易懂設計模式解析 直譯器模式

今天我們來講直譯器模式 interpreter pattern 如何理解這乙個模式呢?乙個簡單的例子 中英文翻譯器這個東西的作用是啥呢?將不知道的英文翻譯成中文以便於理解 或者把中文翻譯成英文來使用。其中目的也就是將語言進行翻譯解釋方便去理解使用。那麼直譯器模式呢?也有相似的邏輯 該模式實現了乙個表...

通俗易懂設計模式解析 模板方法模式

在我們平時的系統開發中,經常會遇到一些方法,出現大部分一樣的 也就是常常有一些穩定的框架結構,但是其中的一些細小的操作卻是在變化。我們現在如何在穩定框架結構的前提下去實現不同的細節呢?定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變乙個演算法的結構即可重定義該演算法...