python工廠模式 取代 init

2021-10-21 05:27:07 字數 1434 閱讀 6853

簡單工廠模式

例項化物件的模式,是用工廠方法替代new操作的一種模式,能給系統帶來擴充套件性和盡量少的修改量

解決依賴關係

工廠方法模式

去掉了簡易工廠模式靜態的方法,使得可以被子類繼承class person(object):

def __init__(self,name):

self.name = name

def work(self):

print(self.name+"工作開始了")

axe = stone_factory().create_axe()

axe.cut_tree()

class axe(object):

def __init__(self,name):

self.name = name

def cut_tree(self):

print("使用%s斧頭砍樹"%self.name)

class stoneaxe(axe):

def cut_tree(self):

print("使用石斧頭砍樹")

class steelaxe(axe):

def cut_tree(self):

print("使用鐵斧頭砍樹")

class tree(object):

pass

#工廠類

class factory(object):

@staticmethod

def create_axe(type):

if type == "stone":

return stoneaxe("花崗岩斧頭")

if type == "steel":

return steelaxe("鐵斧頭")

class factory(object):

def create_axe(self):

pass

class stone_factory(factory):

def create_axe(self):

return stoneaxe("花崗岩斧頭")

class steel_factory(factory):

def create_axe(self):

return steelaxe("鐵斧頭")

靜態方法和例項方法的區別主要體現在兩個方面:

1. 在外部呼叫靜態方法時,可以使用"類名.方法名"的方式,也可以使用"物件名.方法名"的方式。而例項方法只有後面這種方式。也就是說,呼叫靜態方法可以無需建立物件。

2. 靜態方法在訪問本類的成員時,只允許訪問靜態成員(即靜態成員變數和靜態方法),而不允許訪問例項成員變數和例項方法;例項方法則無此限制。

3. 類方法可以被物件呼叫,也可以被例項呼叫;傳入的都是類物件,主要用於工廠方法,具體的實現就交給子類處理

4. 靜態方法引數沒有例項引數 self, 也就不能呼叫例項引數

python工廠模式 取代 init

目錄 簡單工廠模式 factory pattern 簡單工廠模式何時用簡單工廠模式好處簡單工廠模式缺陷簡單工廠模式的 實現業務需求設計思路 實現 結語簡單工廠模式 factory pattern 工廠模式是乙個用來建立物件的設計模式。簡單工廠模式何時用 需要動態建立同一基類的不同物件時使用。簡單工廠...

python工廠模式 python實現工廠模式

我們有乙個基類person,包含方法get name和get gender 有兩個子類male 和female,建構函式可以打招呼。還有乙個工廠類。工廠類有乙個方法名get person有兩個輸入引數,名字和性別。使用者使用工廠類,通過呼叫get person方法。在程式執行期間,使用者通過性別傳遞...

工廠模式 PYTHON

工廠模式屬於建立模式列表類別。它提供了建立物件的最佳方法。在工廠模式中,建立物件時不會將邏輯公開給客戶端,並使用通用介面引用新建立的物件。工廠模式使用工廠方法在python中實現。當使用者呼叫乙個方法時,傳入乙個字串,並通過工廠方法實現建立乙個新物件,並將此物件作為返回值。工廠方法中使用的物件型別由...