python設計模式文獻綜述的簡單介紹

本文目錄一覽:

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
TD7TT的頭像TD7TT
上一篇 2024-10-03 23:27
下一篇 2024-10-03 23:27

相關推薦

  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • 蝴蝶優化算法Python版

    蝴蝶優化算法是一種基於仿生學的優化算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化算法Python版…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29

發表回復

登錄後才能評論