Python設計模式 工廠模式 單例模式的實現

2021-09-11 01:17:40 字數 1579 閱讀 2632

設計模式是物件導向語言特有的內容,設計模式有很多種,比較流行的是gof23種設計模式。通過模式實現了多種分離,大型的專案中採用模式實現

常用的設計模式:工廠模式和單例模式

該模式實現了建立者和呼叫者的分離,使用專門的工廠類將選擇實現類、建立物件進行統一的管理和控制

#測試工廠模式

class ca***ctor:#建立工廠類

def create_car(self,brand):#將建立車的功能統一集中到乙個方法中

if brand == "賓士":

return benz()#若傳入的引數是"賓士",則建立乙個benz類的物件

elif brand == "寶馬":

return bmw()

elif brand == "比亞迪":

return byd()

else:

return "無法建立"

class benz:

pass

class bmw:

pass

class byd:

pass

factory = ca***ctor()#想建立乙個工廠類的物件

c1 = factory.create_car("寶馬")#使用剛建立的物件,直接呼叫create_car方法來建立各種不同型號的車物件

單例模式的作用是確保乙個類只有乙個例項物件,並且提供乙個訪問該例項的全域性訪問點(如配置檔案的讀取,只需要在系統啟動時讀取一次即可,生成乙個例項物件,反覆呼叫時也只有這乙個例項物件,降低了系統的開銷)

#測試單例模式

class mysingletom:

__obj=none #類的屬性值置為none值

__init_flag = true #設定該屬性的目的是測試是否進行過第一次的初始化

def __new__(cls, *args, **kwargs): #重寫new方法

if cls.__obj == none: #說明該類尚未進行第一次的建立例項物件

cls.__obj = object.__new__(cls)#呼叫父類object的建立方式,將物件cls傳入,建立了乙個單例的物件

return cls.__obj

def __init__(self,name):

if mysingletom.__init_flag == true:#若未進行過第一次的初始化,則進行初始化,並置標記位為false

print("init...")

self.name=name

mysingletom.__init_flag=false

a=mysingletom("aaa")

b=mysingletom("bbb")

print(a)

print(b)

#init...

#<__main__.mysingletom object at 0x0000000001dc8400>

#<__main__.mysingletom object at 0x0000000001dc8400>

單例模式下,不論呼叫多少次,始終只進行一次初始化,產生乙個例項物件。

設計模式 單例模式 工廠模式

1.單例設計模式 乙個類中只能有乙個物件 分為 懶漢單例模式和餓漢單例模式 懶漢單例模式 1.私有化構造器 2.宣告本類引用的型別,不要去指向物件 3.提供乙個公共靜態的方法,為外部提供物件,先判斷引用型別是否為物件,如果不是,則引用指 向乙個new 類名 並返回 如果有就返回這個引用 public...

設計模式(工廠模式,單例模式)

設計模式設計模式 gof gang of four 設計模式是指前人在長期的開發經驗中 總結出來的一套用於解決特定問題的套路 設計模式原則 1 工廠模式 示例 工廠模式思想 靜態工廠模式 author whd public abstract class carclass benz extends c...

python設計模式 工廠模式

在學習工廠模式之前,我們必須要了解何為所謂的工廠模式 這篇部落格,我就利用乙個例子來一步步對工廠模式,進行概述 提到工廠模式,我們要有兩個事物,一是工廠,二是產品,具體工廠 產品是什麼型別的?這裡是抽象的,不具體的,需要具體的工廠 產品來繼承或實現其方法,才能稱為具體工廠 具體產品 接下來我定義1個...