Python設計模式之抽象工廠模式
更新時間:2016年08月25日 11:09:44 作者:WuLex
這篇文章主要為大家詳細介紹了Python設計模式之抽象工廠模式,感興趣的小伙伴們可以參考一下
python面向對象編程入門,我們需要不斷學習進步
"""抽象工廠模式的實現(xiàn)"""
import random
class PetShop:
"""寵物商店"""
def __init__(self, animal_factory=None):
"""寵物工廠是我們的抽象工廠。我們可以隨意設置。"""
self.pet_factory = animal_factory
def show_pet(self):
"""使用抽象工廠創(chuàng)建并顯示一個寵物"""
pet = self.pet_factory.get_pet()
print("我們有一個可愛的 {}".format(pet))
print("它說 {}".format(pet.speak()))
print("我們還有 {}".format(self.pet_factory.get_food()))
# 工廠生產(chǎn)的事物
class Dog:
def speak(self):
return "汪"
def __str__(self):
return "Dog"
class Cat:
def speak(self):
return "喵"
def __str__(self):
return "Cat"
# Factory classes
class DogFactory:
def get_pet(self):
return Dog()
def get_food(self):
return "狗食"
class CatFactory:
def get_pet(self):
return Cat()
def get_food(self):
return "貓糧"
# 隨機創(chuàng)建合適的工廠
def get_factory():
"""讓我們動起來!"""
return random.choice([DogFactory, CatFactory])()
# 多個工廠顯示寵物
if __name__ == "__main__":
for i in range(4):
shop = PetShop(get_factory())
shop.show_pet()
print("=" * 20)
結果如圖:

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
SpringBoot中的@MessageMapping注解詳解
這篇文章主要介紹了SpringBoot中的@MessageMapping注解詳解,Spring Boot 提供了對 WebSocket 的支持,其中 @MessageMapping 注解是一個常用的注解,它可以將一個 Java 方法標記為 WebSocket 的消息處理器,需要的朋友可以參考下2023-08-08
Python解方程組 scipy.optimize.fsolve()函數(shù)如何求解帶有循環(huán)求和的方程式
這篇文章主要介紹了Python解方程組 scipy.optimize.fsolve()函數(shù)如何求解帶有循環(huán)求和的方程式,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-06-06
Python中不同圖表的數(shù)據(jù)可視化的實現(xiàn)
數(shù)據(jù)可視化是以圖形格式呈現(xiàn)數(shù)據(jù)。它通過以簡單易懂的格式匯總和呈現(xiàn)大量數(shù)據(jù),幫助人們理解數(shù)據(jù)的重要性,并有助于清晰有效地傳達信息。本文為大家準備了Python實現(xiàn)不同圖表數(shù)據(jù)可視化的代碼,需要的可以參考一下2022-08-08
Python使用wxpy模塊實現(xiàn)微信兩兩群組消息同步功能(推薦)
這篇文章主要介紹了Python使用wxpy模塊實現(xiàn)微信兩兩群組消息同步,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-06-06
python計算Content-MD5并獲取文件的Content-MD5值方式
這篇文章主要介紹了python計算Content-MD5并獲取文件的Content-MD5值方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04

