本文目錄一覽:
python什麼是設計模式
Python軟件開發中引入設計模式是由生活中的一些實例啟發而來的。例如,有2個小朋友Alice和Jack,去麥當勞點餐。Alice不了解麥當勞的套餐模式,於是想了一下,跟服務員說:“我要一個麥辣雞腿堡、一個薯條和一杯可樂”。而Jack經常吃麥當勞,他也想點和Alice一樣的餐品。Jack發現其實Alice點的就是麥當勞的A套餐,於是他直接和服務員說:“給我一個A套餐”。
從上面的事例中可以看出,Jack的點餐效率高,因為Jack和服務員都了解麥當勞的套餐模式,溝通起來效率自然就高。那麼在這個生活案例中,創建套餐是提高點餐效率的可重用解決方案。它會根據客戶的需求和餐品的被點頻次制定出符合不同人群的套餐。套餐可以重複被更多的人去點,因此大大提高了顧客與服務員之間的溝通效率。
同理,在軟件開發世界裡,本來沒有設計模式的,用的人多了,也便總結出了設計模式。這就是設計模式的由來。設計模式針對同一情境,眾多軟件開發人員經過長時間總結,便得到了最佳可重用解決方案。這個可重用解決方案解決了軟件開發過程中常見的問題,擁有固定的術語,因此交流起來就方便了很多。
綜上,設計模式是軟件開發過程中共性問題的可重用解決方案。設計模式的內涵第一是一套被反覆使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結。第二是用來解決共性問題。設計模式的外延有:單例模式、工廠模式、適配器模式、代理模式等。據悉,現用的設計模式有24種,隨着時代的發展,軟件編程可能會遇到新的場景,設計模式會越來越豐富。
先看一個設計模式中最基本的單例模式的例子。Windows裡面的任務管理器就是個典型的單例模式軟件。這是因為Windows任務管理器只能打開一個,就算用戶重複打開,也只能獲得一個實例,這不同於word等軟件可以打開多個實例。其中的原因就是如果有2個窗口同時都能結束某進程,這就會造成在窗口A中某進程結束了,在窗口B中該進程還保留的;同理反過來,某進程在窗口B中結束了,而在窗口A中還保留着。這樣就會造成衝突,系統崩潰。Windows裡面的任務管理器符合單例模式,保證一個類僅有一個實例的設計模式。
python常用的幾種設計模式是什麼
python常用的幾種設計模式有:1、單例模式,確保某一個類只有一個實例;2、工廠模式,使用一個公共的接口來創建對象;3、策略模式,隨着策略對象改變內容;4、門面模式,對子系統的封裝,使得封裝接口不會被單獨提出來。
什麼是設計模式?
設計模式是一套被反覆使用,多數人知道,經過分類編目的代碼設計經驗總結。
使用設計模式是為了提高代碼可重用性,可閱讀性,和可靠性。
你說理解的設計模式有幾種?
設計模式又可分為三種:創建型(單例模式)、(工廠模式),結構型,行為型(策略模式)
單例模式以及應用場景:
(1)確保某一個類只有一個實例,而且自行實例化並向整個系統提供這個實例,這個類稱為單例類,單例模式是一種對象創建型模式。Windows的Task Manager(任務管理器)、Recycle Bin(回收站)、網站計數器
(2)單例模式應用的場景一般發現在以下條件下:
資源共享的情況下,避免由於資源操作時導致的性能或損耗等。如上述中的日誌文件,應用配置。控制資源的情況下,方便資源之間的互相通信。如線程池等
要點:一是某個類只能有一個實例;二是它必須自行創建這個實例;三是它必須自行向整個系統提供這個實例。
工廠模式:
提供一個創建對象的接口,不像客戶端暴露創建對象的過程,而是使用一個公共的接口來創建對象。
可以分為三種:簡單工廠 工廠方法 抽象工廠
一個類的行為或其算法可以在運行時更改。這種類型的設計模式屬於行為型模式。
策略模式:
在策略模式中,我們創建表示各種策略的對象和一個行為隨着策略對象改變而改變的 context 對象。策略對象改變 context 對象的執行算法。
要點:把一個個策略,也就是算法封裝成一個一個類,任意的替換
解決的問題:避免多個if….else帶來的複雜
使用場景:系統中需要動態的在集中算法中動態的選擇一種,
門面模式:
門面模式也叫外觀模式,定義如下:要求一個子系統的外部與其內部的通信必須通過一個統一的對象進行。門面模式提供一個高層次的接口,使得子系統更易於使用。門面模式注重“統一的對象”,也就是提供一個訪問子系統的接口。門面模式與之前說過的模板模式有類似的地方,都是對一些需要重複方法的封裝。但從本質上來說,是不同的。模板模式是對類本身的方法的封裝,其被封裝的方法也可以單獨使用;而門面模式,是對子系統的封裝,其被封裝的接口理論上是不會被單獨提出來用的。
一個對象有很多行為,如果么有選擇合適的設計模式,這些行為就需要用多重的條件判斷來實現算法的切換,增加了代碼的複雜度。
推薦課程:Python面對對象(Corey Schafer)
《精通python設計模式第二版》pdf下載在線閱讀全文,求百度網盤雲資源
《精通python設計模式第二版》百度網盤pdf最新全集下載:
鏈接:
?pwd=uu37 提取碼:uu37
簡介:精通python設計模式是針對Python代碼實現設計模式的經典作品,着重討論了用於解決日常問題的所有GoF設計模式,它們能幫助你構建有彈性、可伸縮、穩健的應用程序,並將你的編程技能提升至新的高度。第2版探討了橋接模式、備忘模式以及與微服務相關的幾種模式。
Python設計模式之抽象工廠模式
Python設計模式之抽象工廠模式
這篇文章主要為大家詳細介紹了Python設計模式之抽象工廠模式,感興趣的小夥伴們可以參考一下
python面向對象編程入門,我們需要不斷學習進步
“””抽象工廠模式的實現”””
import random
class PetShop:
“””寵物商店”””
def __init__(self, animal_factory=None):
“””寵物工廠是我們的抽象工廠。我們可以隨意設置。”””
self.pet_factory = animal_factory
def show_pet(self):
“””使用抽象工廠創建並顯示一個寵物”””
pet = self.pet_factory.get_pet()
print(“我們有一個可愛的 {}”.format(pet))
print(“它說 {}”.format(pet.speak()))
print(“我們還有 {}”.format(self.pet_factory.get_food()))
# 工廠生產的事物
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 “貓糧”
# 隨機創建合適的工廠
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)
以上就是本文的全部內容,希望對大家的學習有所幫助
原創文章,作者:TD7TT,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/130036.html