Spring5設計模式 原型模式

2021-10-18 10:41:05 字數 1900 閱讀 7213

原型模式是指原型例項指定建立物件的種類,並複製這些原型這些原型建立新的物件。

主要適用於:

(1)大量的getter和setter 賦值的場景

(2)類初始化消耗資源較多。

(3)使用 new 生成乙個物件需要非常繁瑣的過程(資料準備、訪問許可權)。

(4)建構函式比較複雜。

(5)在迴圈體中產生大量物件。

​ 在 spring 中,原型模式應用得非常廣泛,例如 scope=「prototype」 ,我們經常用的 json.parseobject() 也是一種原型模式。分為淺轉殖和深轉殖兩種。

​ 淺轉殖:完整複製值型別資料,沒有複製引用物件(也就是說所有的引用物件仍然指向原來物件的位址)。

​ 乙個標準的原型模式**應該是這樣設計的:先建立原型 prototype 介面、建立需要轉殖的類concreteprototypea、建立轉殖的客戶端,通過客戶端來實現轉殖。

prototype介面

public

inte***ce

prototype

concreteprototypea 需要轉殖的類

public

class

concreteprototypea

implements

prototype

@override

public prototype clone()

// 省略getter、setter方法

}

client 客戶端類

public

class

client

public prototype startclone

(prototype concreteprototype)

}

test 測試類

public

class

prototypetest

}

這裡舉乙個房子和房子的主人的案例,房子有面積大小、樓層等屬性、房主有姓名、**等屬性。

房子類(包含這個房子的主人、面積、樓層屬性)

public

class

house

implements

serializable

public

house

(string roomid,

int area,

double price, houseowner owner)

}

房主類

public

class

houseowner

implements

serializable

public

houseowner

(int phone, string name)

}

test測試類

public

class

houseclonetest

}

​ 如果我們轉殖的物件是單例物件,那麼就意味著深轉殖會破壞單例模式。實際上防止轉殖破壞單例模式的解決思路很簡單:禁止轉殖即可。

兩種方式:

1、 不實現 cloneable 介面;

2、重寫 clone() 方法,在 clone() 方法中返回單例物件;

@override

protected object clone()

throws clonenotsupportedexception

Spring5設計模式 委派模式

定義 是一種物件導向的設計模式,允許物件組合實現與繼承相同的 重用。它的基本作用就是負責任務的呼叫和分配任務,是一種特殊的靜態 可以理解為全權 但是 模式注重過程,而委派模式注重結果。委派模式屬於行為型模式,不屬於gof23種設計模式中。應用場景 1 委派物件本身不知道如何處理乙個任務或請求,而交給...

設計模式 5 原型模式

用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。其中有乙個詞很重要,那就是拷貝。可以說,拷貝是原型模式的精髓所在。舉個現實中的例子來介紹原型模式。找工作的時候,我們需要準備簡歷。假設沒有列印裝置,因此需手寫簡歷,這些簡歷的內容都是一樣的。這樣有個缺陷,如果要修改簡歷中的某項,那麼所有...

設計模式 原型模式

1.首先分析原型模式的由來 一般來說,建立乙個物件可以由以下方法 知道物件的具體型別,直接用new生成。不知道型號,知道相應的需求,可以使用工廠方法模式。根據乙個已有的物件來複製為乙個新的物件,可以使用原型模式。2.原型模式可以簡單理解為拷貝原型物件得到新的物件。想象乙個配鑰匙的小店,給店主乙個原有...