設計模式是物件導向語言特有的內容,設計模式有很多種,比較流行的是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個...