設計模式專題(4) 策略模式 原型模式

2021-09-26 11:07:06 字數 966 閱讀 9468

第一節 什麼是原型設計模式

第二節 原型應用的場景

(1)類初始化需要消化非常多的資源,這個資源包括資料,硬體資料等。通過原型拷貝避免這些消耗

(2)通過new產生的乙個物件需要非常繁瑣的資料準備或者許可權,這時候需要原型模式

(3)乙個物件需要提供給其他物件訪問,而且各個呼叫者可能修改其值,這時候可以考慮使用原型模式拷貝多個物件供呼叫者使用,即保護性拷貝。

原型設計模式的**實現
(1)淺轉殖只能拷貝基本型別(這裡包括了string,因為string被加了final修飾,無法更改,所以淺拷貝出來的是新的,與原型互不影響),而引用型別的資料,複製後也是會發生引用,記憶體位址並沒有發生改變。換句話說,淺轉殖僅僅是指定了被複製的記憶體位址,如果原位址中的物件被改變了,那麼淺複製出來的物件也會發生相應的改變。改變值不改變引用。

(2)深轉殖:在計算機中開闢了一塊新的記憶體位址用於存放複製的物件,記憶體位址直接發生了改變。原物件和轉殖出來的物件互不影響。

(3)無論淺拷貝還是深拷貝轉殖出來的記憶體位址都是不同的,但是淺拷貝中轉殖出來的物件中若包含了引用資料型別,則引用資料型別的指向是一樣的。比如有book類,裡面有乙個list列表,我們對其進行淺拷貝,此時得到的拷貝物件book1與原物件book記憶體位址不同,但裡面的list列表的指向都是相同的,指向乙個記憶體區域。

淺拷貝:

深拷貝

什麼是策略模式
補充一點:

我們寫**的時候,價錢一般用long進行宣告,單位是分

策略模式**實現:

設計模式4 原型模式

通過實現cloneable介面,並重寫父類 即object 的clone方法來返回和該物件一模一樣的物件來實現例項化乙個新物件的效果。比較官方的解釋是 用原型例項指定建立物件的種類,並且通過拷貝這些原型來建立新的物件。public class prototype implements cloneab...

Java設計模式4 原型模式

原型模式是一種建立型設計模式,它通過複製乙個已經存在的例項來返回新的例項,而不是新建例項.被複製的例項就是我們所稱的原型,這個原型是可定製的.說白了就是乙個類實現了cloneable,重寫clone方法,就可以呼叫這個類的物件複製例項了。1 拷貝分類 原型模式中的拷貝分為 淺拷貝 和 深拷貝 淺拷貝...

Python設計模式4 原型模式

原型模式,也是用於建立物件時的一種設計方法。主要應用場景是 每次初始化某個物件時,需要傳遞大量的引數,很不方便,此時,可以使用原型模式,在已經建立並初始化的物件基礎上,可以快速而又方便建立新的不同物件。主要原理 使用深拷貝,複製乙個已建立的物件,然後使用 dict update 方法更新已建立物件中...