測試必認識的設計模式之單例模式

2021-10-04 23:49:42 字數 1692 閱讀 5525

學習乙個知識,首先要知道它是做什麼的,它的應用場景是什麼。

程式設計領域的設計模式對於開發大佬們應該很熟悉,但對於非測試開發來說基本用不到,但也不能不知道啊。

設計模式(design

pattern)代表了最佳的實踐,通常被有經驗的物件導向的軟體開發人員所採用。設計模式是軟體開發人員在軟體開發過程中面臨的一般問題的解決方案。這些解決方案是眾多軟體開發人員經過相當長的一段時間的試驗和錯誤總結出來的。

從描述來看,設計模式就是大神們在解決問題時總結出來的一套最佳解決方案,我覺得這更像一種分類,每個類別下面有著該類問題的解決方案,大神們將他們整理好,讓後人學習。

設計模式有很多很多,其中最流行的有23種,在這些最流行的裡面最簡單的有2種,單例模式和工廠模式。

先看單例模式,因為其他的我也不會!

那單例模式到底是什麼呢?

它的核心是無論你new了多少個物件,返回的物件位址都是同乙個!按照這個說法我們的思路就可以是在new乙個物件時,讓他返回第乙個已經new好的物件的位址。

python中建立物件都是自動完成了,它先調__new__建立記憶體位址和返回位址,在__init__初始化資料。

正常情況下,每次建立乙個物件都會有乙個對應的id

class

mysingle()

:def

__init__

(self)

:pass

m1 = mysingle(

)print

(m1)

m2 = mysingle(

)print

(m2)

<__main__.mysingle object at 0x0000000001ddcc88

>

<__main__.mysingle object at 0x00000000029f2f48

>

但我們改讓他只返回同乙個怎麼處理呢?網上有很多方法,我找了個能看懂的模仿了下

class

mysingle()

: instance =

none

def__new__

(cls,

*args,

**kwargs)

:if cls.instance is

none

: cls.instance =

super()

.__new__(cls)

return cls.instance

def__init__

(self)

:pass

m1 = mysingle(

)print

(m1)

m2 = mysingle(

)print

(m2)

<__main__.mysingle object at 0x00000000029d1108

>

<__main__.mysingle object at 0x00000000029d1108

>

主要的思路是在__new__開闢記憶體位址時校驗下是不是已經建立過了,如果未建立就建立乙個,如果建立了就返回已經建立好的。

其實測試上基本用不到,但有必要混個臉熟!!

測試必認識的設計模式之抽象工廠模式

專業版 簡單工廠模式是乙個小工廠,工廠方法模式是乙個園區,抽象工廠模式是乙個區,如某城市的高新區,在這個高新區中有很多園區,其中有軟體園,工業園等等,高新區作為最高端別的工廠類,我們把它叫做超級工廠,我們把其中的園區叫做普通工廠。直接看 吧!先看軟體園 class softwarecompany d...

認識設計模式(一) 單例模式(1)

四 優缺點分析 五 總結 餓漢式 靜態常量 餓漢式 靜態 塊 懶漢式 執行緒不安全 懶漢式 執行緒安全,同步方法 懶漢式 執行緒安全,同步 塊 雙重檢查靜態內部類列舉構造器私有化 防止new再獲取物件 類的內部建立物件 向外暴露乙個靜態的公共方法,getinstance,這個唯一的方法用來獲取物件例...

設計模式之單例模式

前一段時間買了一本秦小波寫的 設計模式之禪 網上對這書的評價很高。現在還沒有看很多,但是有些地方頗有感觸,也並不是所有的地方都能看懂,但是會慢慢研究的。自己對於設計模式的感覺就是乙個字 牛!感覺會23種設計模式並且會熟練運用的人,真的就是大師級的牛人了,設計模式是乙個專案主管或者架構師一定要會的東西...