結語定義乙個用於建立物件的介面,讓子類決定將哪乙個類例項化,讓乙個類的例項化延遲到其子類。
需要動態建立同一基類的不同物件時使用。
實現了物件建立和使用的分離;
如何建立這個物件的細節則完全封裝在具體工廠內部;
在系統中加入新產品時,完全符合開閉原則。
系統中類的個數將成對增加,在一定程度上增加了系統的複雜度;
會給系統帶來一些額外的開銷,增加了系統的抽象性和理解難度。
有乙個汽車廠商生產兩種車輛,根據使用者需求提供不同的車型。使用者剛好有兩種需求對應這兩種車型:
需求:只買貴的,不買對的
需求:經濟、安全、實用
定義乙個名為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,或者是使用高階的反射 來進行物件的建立。工廠方法 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。工廠方法使乙個類的例項化延遲到其子類。區別 簡單工廠的優點是工廠類中...