python工廠模式 取代 init

2021-10-16 23:36:15 字數 1510 閱讀 2887

目錄

簡單工廠模式(****** factory pattern)簡單工廠模式何時用簡單工廠模式好處簡單工廠模式缺陷簡單工廠模式的**實現業務需求設計思路**實現

結語簡單工廠模式(****** factory pattern)

工廠模式是乙個用來建立物件的設計模式。

簡單工廠模式何時用

需要動態建立同一基類的不同物件時使用。

簡單工廠模式好處

實現了物件建立和使用的分離;客戶端無須知道所建立的具體產品類的類名,只需要知道具體產品類所對應的引數即可。

簡單工廠模式缺陷

由於工廠類集中了所有產品的建立邏輯,職責過重,一旦不能正常工作,整個系統都要受到影響;一旦新增新產品就不得不修改工廠邏輯,違反了開閉原則。

簡單工廠模式的**實現

業務需求

有乙個汽車廠商生產兩種車輛,根據使用者需求提供不同的車型。使用者剛好有兩種需求對應這兩種車型:

需求:只買貴的,不買對的需求:經濟、安全、實用

設計思路

定義乙個名為car的基類,土豪車cara和普通車carb別繼承自基類car;工廠類ca***ctory提供乙個名為getcar的方法來返回相應車輛;使用者通過工廠類得到自己想要的車輛。

**實現

為了實現上述需求,**如下:

# -*- coding: utf-8 -*-

class car: # 定義基類

def __init__(self):

self.speed = 0

def run(self):

print('speed: ' + str(self.speed))

class cara(car):  # 土豪車

def __init__(self):

self.speed = 200

print('i am rich. i can run faster.')

class carb(car): # 普通車

def __init__(self):

self.speed = 100

print('i am normal. i can run.')

class ca***ctory: # 汽車工廠

# 如果增加了新的車種也必須同時修改該方法,這裡違反了開閉原則

def get_car(self, kind):

if kind == 'expensive': # 貴的則生產 土豪車

return cara()

if kind == 'normal': # 一般的生產 普通車

return carb()

if __name__ == '__main__':

# 業務邏輯中已經不生產具體的車輛了,實現了解耦

factory = ca***ctory()

b = factory.get_car('normal')

b.run()

a = factory.get_car('expensive')

a.run()

結語

python工廠模式 取代 init

簡單工廠模式 例項化物件的模式,是用工廠方法替代new操作的一種模式,能給系統帶來擴充套件性和盡量少的修改量 解決依賴關係 工廠方法模式 去掉了簡易工廠模式靜態的方法,使得可以被子類繼承class person object def init self,name self.name name def...

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

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

工廠模式 PYTHON

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