Python設計模式 工廠方法模式

2021-09-19 15:47:59 字數 1415 閱讀 1121

結語定義乙個用於建立物件的介面,讓子類決定將哪乙個類例項化,讓乙個類的例項化延遲到其子類。

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

實現了物件建立和使用的分離;

如何建立這個物件的細節則完全封裝在具體工廠內部;

在系統中加入新產品時,完全符合開閉原則。

系統中類的個數將成對增加,在一定程度上增加了系統的複雜度;

會給系統帶來一些額外的開銷,增加了系統的抽象性和理解難度。

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

需求:只買貴的,不買對的

需求:經濟、安全、實用

定義乙個名為car的基類,土豪車cara和普通車carb別繼承自基類car;

工廠基類類ca***ctory提供乙個名為getcar介面;

土豪車cara和普通車carb的工廠分別實現基類的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): # 工廠方法介面(工廠方法模式的工廠方法應該就是指這個方法)

pass

class carafactory(ca***ctory):

def get_car(self): # 土豪車 實現工廠方法介面

return cara()

class carbfactory(ca***ctory):

def get_car(self): # 普通車 實現工廠方法介面

return carb()

if __name__ == '__main__':

factorya = carafactory()

factoryb = carbfactory()

a = factorya.get_car()

a.run()

b = factoryb.get_car()

b.run()

Python設計模式 建立型模式 工廠方法模式

描述 coding utf 8 class product def operation self pass class concrete product1 product def operation self return the result of concreteproduct1 class c...

設計模式 建立型 工廠方法模式 多個工廠方法模式

多個工廠方法模式,屬於工廠方法模式中的一種。它是一種建立型模式。是對普通簡單工廠模式的改進,在普通工廠方法模式中,如果傳遞的字串出錯,則不能正確建立物件,而多個工廠方法模式是提供多個工廠方法,分別建立物件.public class gunfactory public igun getgunm4a1 ...

設計模式之工廠方法模式VS簡單工廠方法模式

名詞解釋 簡單工廠 這個實在是沒什麼解釋的,就是乙個工廠類,然後有乙個方法,根據傳遞的引數可以通過switch 你也可以是if,或者是使用高階的反射 來進行物件的建立。工廠方法 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。工廠方法使乙個類的例項化延遲到其子類。區別 簡單工廠的優點是工廠類中...