Python設計模式之工廠模式

2021-10-07 09:30:12 字數 1962 閱讀 6780

工廠模式,可以理解為建立乙個工廠(類),這個工廠會根據你的需求(輸入)生產出(輸出)你想要的產品(物件)。簡單說就是工廠類會根據你的輸入給你返回恰當的物件。

class

shape

: @staticmethod

deffactory

(shape)

:if shape ==

'square'

:return square(

)if shape ==

'circle'

:return circle(

)class

square

: @staticmethod

defdraw()

:return

"i am a square"

class

circle

: @staticmethod

defdraw()

:return

"i am a circle"

if __name__ ==

'__main__'

: shape = shape(

).factory(

"square"

)print

(shape.draw())

shape = shape(

).factory(

"circle"

)print

(shape.draw(

))

抽象工廠:有時候我們希望通過單個介面能夠訪問所有的工廠,而不用關心具體的工廠,此時就需要定義乙個抽象類,讓所有的工廠類都繼承這個類並實現這個介面。

from abc import abcmeta, abstractmethod

class

abstractfactory

(metaclass=abcmeta)

:"""

抽象工廠,定義所有工廠需要實現的介面

"""@abstractmethod

defmake_object

(self)

:pass

class

squarefactory

(abstractfactory)

:"""

具體工廠,繼承抽象工廠,實現必要介面

"""defmake_object

(self)

:return square(

)class

circlefactory

(abstractfactory)

:"""

具體工廠,繼承抽象工廠,實現必要介面

"""defmake_object

(self)

:return circle(

)class

square

: @staticmethod

defdraw()

:return

"i am a square"

class

circle

: @staticmethod

defdraw()

:return

"i am a circle"

if __name__ ==

'__main__'

:def

draw_func

(factory)

:"""

呼叫函式,不關心具體工廠,直接使用make_object()介面建立物件。

"""obj = factory.make_object(

)print

(obj.draw())

factory = squarefactory(

) draw_func(factory)

factory = circlefactory(

) draw_func(factory)

python設計模式之工廠模式

from abc import abcmeta,abstractmethod class coke metaclass abcmeta abstractmethod defdrink self pass class coca coke defdrink self print drink coca c...

python學習 設計模式之 工廠模式

一 工廠模式運用場景 若需要將物件的建立和使用解耦,工廠方法也能派上用場。工廠方法可以在必要時建立新的物件,從而提高效能和記憶體使用率。二 工廠模式案例 import xml.etree.elementtree as etree import json class jsonconnector def...

設計模式 設計模式之工廠模式

工廠方法模式 建立模式 使用場景?作用?形態?場景 大量類似的實體類 要建立的實體類都是同一本質的東西 披薩 有部分類似功能 準備 烘烤 切法 實現方式不一樣 準備的材料不同 烘烤時間不同 切法不同 將繁瑣複雜的建立類的過程聚集在一起,有序清晰 把具體例項化的過程從客戶 中抽離 作用 1 將建立物件...