導航:首頁 > 編程語言 > 人人都懂設計模式python

人人都懂設計模式python

發布時間:2025-01-01 15:16:04

python面試一般問什麼常用設計模式

1.設計模式介紹
設計模式(Design Patterns)

——可復用面向對象軟體的基礎

設計模式(Design pattern)是一套被反復使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結。使用設計模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。 毫無疑問,設計模式於己於他人於系統都是多贏的,設計模式使代碼編制真正工程化,設計模式是軟體工程的基石,如同大廈的一塊塊磚石一樣。項目中合理的運用設計模式可以完美的解決很多問題,每種模式在現在中都有相應的原理來與之對應,每一個模式描述了一個在我們周圍不斷重復發生的問題,以及該問題的核心解決方案,這也是它能被廣泛應用的原因。

2. 設計模式分類
經典的《設計模式》一書歸納出23種設計模式,這23種模式又可歸為,創建型、結構型和行為型3大類

2.1.創建型模式
前面講過,社會化的分工越來越細,自然在軟體設計方面也是如此,因此對象的創建和對象的使用分開也就成為了必然趨勢。因為對象的創建會消耗掉系統的很多資源,所以單獨對對象的創建進行研究,從而能夠高效地創建對象就是創建型模式要探討的問題。這里有6個具體的創建型模式可供研究,它們分別是:

簡單工廠模式(Simple Factory);

工廠方法模式(Factory Method);

抽象工廠模式(Abstract Factory);

創建者模式(Builder);

原型模式(Prototype);

單例模式(Singleton)。

說明:嚴格來說,簡單工廠模式不是GoF總結出來的23種設計模式之一。

2.2 結構型模式
在解決了對象的創建問題之後,對象的組成以及對象之間的依賴關系就成了開發人員關注的焦點,因為如何設計對象的結構、繼承和依賴關系會影響到後續程序的維護性、代碼的健壯性、耦合性等。對象結構的設計很容易體現出設計人員水平的高低,這里有7個具體的結構型模式可供研究,它們分別是:

外觀模式(Facade);

適配器模式(Adapter);

代理模式(Proxy);

裝飾模式(Decorator);

橋模式(Bridge);

組合模式(Composite);

享元模式(Flyweight)

2.3 行為型模式
在對象的結構和對象的創建問題都解決了之後,就剩下對象的行為問題了,如果對象的行為設計的好,那麼對象的行為就會更清晰,它們之間的協作效率就會提高,這里有11個具體的行為型模式可供研究,它們分別是:

模板方法模式(Template Method);

觀察者模式(Observer);

狀態模式(State);

策略模式(Strategy);

職責鏈模式(Chain of Responsibility);

命令模式(Command);

訪問者模式(Visitor);

調停者模式(Mediator);

備忘錄模式(Memento);

迭代器模式(Iterator);

解釋器模式(Interpreter)。

3. 設計模式的六大原則
1、開閉原則(Open Close Principle)

開閉原則就是說對擴展開放,對修改關閉。在程序需要進行拓展的時候,不能去修改原有的代碼,實現一個熱插拔的效果。所以一句話概括就是:為了使程序的擴展性好,易於維護和升級。想要達到這樣的效果,我們需要使用介面和抽象類,後面的具體設計中我們會提到這點。

2、里氏代換原則(Liskov Substitution Principle)

里氏代換原則(Liskov Substitution Principle LSP)面向對象設計的基本原則之一。 里氏代換原則中說,任何基類可以出現的地方,子類一定可以出現。 LSP是繼承復用的基石,只有當衍生類可以替換掉基類,軟體單位的功能不受到影響時,基類才能真正被復用,而衍生類也能夠在基類的基礎上增加新的行為。里氏代換原則是對「開-閉」原則的補充。實現「開-閉」原則的關鍵步驟就是抽象化。而基類與子類的繼承關系就是抽象化的具體實現,所以里氏代換原則是對實現抽象化的具體步驟的規范。—— From Bai 網路

3、依賴倒轉原則(Dependence Inversion Principle)

這個是開閉原則的基礎,具體內容:真對介面編程,依賴於抽象而不依賴於具體。

4、介面隔離原則(Interface Segregation Principle)

這個原則的意思是:使用多個隔離的介面,比使用單個介面要好。還是一個降低類之間的耦合度的意思,從這兒我們看出,其實設計模式就是一個軟體的設計思想,從大型軟體架構出發,為了升級和維護方便。所以上文中多次出現:降低依賴,降低耦合。

5、迪米特法則(最少知道原則)(Demeter Principle)

為什麼叫最少知道原則,就是說:一個實體應當盡量少的與其他實體之間發生相互作用,使得系統功能模塊相對獨立。

6、合成復用原則(Composite Reuse Principle)

原則是盡量使用合成/聚合的方式,而不是使用繼承。

② python常用的幾種設計模式是什麼

python常用的幾種設計模式有:1、單例模式,確保某一個類只有一個實例;2、工廠模式,使用一個公共的介面來創建對象;3、策略模式,隨著策略對象改變內容;4、門面模式,對子系統的封裝,使得封裝介面不會被單獨提出來。

什麼是設計模式?

設計模式是一套被反復使用,多數人知道,經過分類編目的代碼設計經驗總結。

使用設計模式是為了提高代碼可重用性,可閱讀性,和可靠性。

你說理解的設計模式有幾種?

設計模式又可分為三種:創建型(單例模式)、(工廠模式),結構型,行為型(策略模式)

單例模式以及應用場景:

(1)確保某一個類只有一個實例,而且自行實例化並向整個系統提供這個實例,這個類稱為單例類,單例模式是一種對象創建型模式。Windows的Task Manager(任務管理器)、Recycle Bin(回收站)、網站計數器

(2)單例模式應用的場景一般發現在以下條件下:

資源共享的情況下,避免由於資源操作時導致的性能或損耗等。如上述中的日誌文件,應用配置。控制資源的情況下,方便資源之間的互相通信。如線程池等

要點:一是某個類只能有一個實例;二是它必須自行創建這個實例;三是它必須自行向整個系統提供這個實例。

工廠模式:

提供一個創建對象的介面,不像客戶端暴露創建對象的過程,而是使用一個公共的介面來創建對象。

可以分為三種:簡單工廠 工廠方法 抽象工廠

一個類的行為或其演算法可以在運行時更改。這種類型的設計模式屬於行為型模式。

策略模式:

在策略模式中,我們創建表示各種策略的對象和一個行為隨著策略對象改變而改變的 context 對象。策略對象改變 context 對象的執行演算法。

要點:把一個個策略,也就是演算法封裝成一個一個類,任意的替換

解決的問題:避免多個if....else帶來的復雜

使用場景:系統中需要動態的在集中演算法中動態的選擇一種,

門面模式:

門面模式也叫外觀模式,定義如下:要求一個子系統的外部與其內部的通信必須通過一個統一的對象進行。門面模式提供一個高層次的介面,使得子系統更易於使用。門面模式注重「統一的對象」,也就是提供一個訪問子系統的介面。門面模式與之前說過的模板模式有類似的地方,都是對一些需要重復方法的封裝。但從本質上來說,是不同的。模板模式是對類本身的方法的封裝,其被封裝的方法也可以單獨使用;而門面模式,是對子系統的封裝,其被封裝的介面理論上是不會被單獨提出來用的。

一個對象有很多行為,如果么有選擇合適的設計模式,這些行為就需要用多重的條件判斷來實現演算法的切換,增加了代碼的復雜度。

推薦課程:Python面對對象(Corey Schafer)

③ Python設計模式:工廠方法模式

工廠,大家一般能想到的是生產產品的地方, 在設計模式中,工廠可分為:簡單工廠模式、工廠方法模式。 在前期推文 Python 簡單工廠模式 中有關於簡單工廠模式的解讀。

根據工廠的抽象程度可分為:工廠方法模式、抽象工廠模式。 該模式用於封裝和管理對象的創建,是一種創建型模式。

在簡單工廠模式中,只提供了一個工廠類,該工廠類處於對產品類進行實例化的中心位置,它知道每一個產品對象的創建細節,並決定何時實例化哪一個產品類。

簡單工廠模式最大的缺點是:當有新產品要加入到系統中時,必須修改工廠類,加入必要的處理邏輯,這違背了「開閉原則」。
在簡單工廠模式中,所有的產品都是由同一個工廠創建,工廠類職責較重,業務邏輯較為復雜,具體產品與工廠類之間的耦合度高,嚴重影響了系統的靈活性和擴展性,而工廠方法模式則可以很好地解決這一問題。因此工廠方法模式應運而生。

(1)、工廠方法模式定義一個用於創建對象的介面,但是工廠本身並不負責創建對象,而是讓子類決定將哪一個類實例化。工廠方法模式讓一個類的實例化延遲到其子類。 工廠方法的創建是通過繼承而不是通過實例化來完成的。

(2)、工廠方法模式就是簡單工廠模式的進一步抽象。由於面向對象多態性,工廠方法模式保持了簡單工廠的優點同時克服了它的缺點。工廠方法模式中,核心的工廠被提升為一個抽象類,將具體的創建工作交給他的子類完成。

這個抽象的工廠類僅規定具體工廠實現的介面,而不明確指出如何實例化一個產品類,這使得工廠方法模式允許系統在不修改原有產品結構的情況下輕松的引進新產品。

工廠方法使設計更加具有可定製性,它可以返回相同的實例或子類,而不是某種類型的對象。

前期分享的 Python 簡單工廠模式 和今天分享的Python 工廠方法模式,大家在實際應用時能解決問題滿足需求即可,可靈活變通,自由選擇,無所謂哪種設計模式更高級。

同時無論哪種設計模式,由於可能封裝了大量對象和工廠創建,當有新加入產品的需求時,需要修改已定義好的工廠相關的類,因此對於產品和工廠的擴展性不太友好,在選擇使用時利弊需要權衡一下。

④ Python有設計模式么

Python設計模式主要分為三大類:創建型模式、結構型模式、行為型模式;三 大類中又被細分為23種設計模式,以下這幾種是最常見的。
單例模式:是一種常用的軟體設計模式,該模式的主要目的是確保某一個類只有一個實例存在。當你希望在整個系統中,某個類只能出現一個是實例時,單例對象就能派上用場。單例對象的要點有三個:一是某個類只能有一個實例;二是它必須自行創建整個實例,三是它必須自行向整個系統提供這個實例。
工廠模式:提供一個創建對象的介面,不像客戶端暴露創建對象的過程,使用一個公共的介面來創建對象,可以分為三種:簡單工廠、工廠方法、抽象工廠。一個類的行為或其演算法可以在運行時更改,這種類型的設計模式屬於行為型模式。
策略模式:是常見的設計模式之一,它是指對一系列的演算法定義,並將每一個演算法封裝起來,而且使它們還可以相互替換。策略模式讓演算法獨立於使用它的客戶而獨立變化。換句話來講,就是針對一個問題而定義出一個解決的模板,這個模板就是具體的策略,每個策略都是按照這個模板進行的,這種情況下我們有新的策略時就可以直接按照模板來寫,而不會影響之前已經定義好的策略。
門面模式:門面模式也被稱作外觀模式。定義如下:要求一個子系統的外部與其內部的通信必須通過一個統一的對象進行。門面模式提供一個高層次的介面,使得子系統更易於使用。門面模式注重統一的對象,也就是提供一個訪問子系統的介面。門面模式與模板模式有相似的地方,都是對一些需要重復方法的封裝。但本質上是不同的,模板模式是對類本身的方法的封裝,其被封裝的方法也可以單獨使用;門面模式,是對子系統的封裝,其被封裝的介面理論上是不會被單獨提出來使用的。

閱讀全文

與人人都懂設計模式python相關的資料

熱點內容
數獨演算法java 瀏覽:471
手機怎麼復制解壓後的文件 瀏覽:653
gbk轉字元串java 瀏覽:338
遼寧集群伺服器雲空間 瀏覽:30
車載蘋果系統怎麼與安卓系統連接 瀏覽:81
國科方案攝像頭用的什麼APP 瀏覽:295
用30秒壓縮拼圖 瀏覽:171
咸魚app什麼開發的 瀏覽:867
ipad怎麼解壓有密碼的壓縮包 瀏覽:854
php動態css 瀏覽:287
svnrevert命令 瀏覽:305
安卓側滑菜單怎麼設置 瀏覽:933
單片機tl494 瀏覽:186
什麼清單app可以查看網格 瀏覽:826
footer標簽命令怎麼寫 瀏覽:531
linux查看默認網關 瀏覽:68
伺服器做地址映射 瀏覽:216
ldaplinux認證 瀏覽:628
牛客網編譯器注意事項 瀏覽:321
pdf用韓語 瀏覽:840