【Python】Python语言学习:设计模式、单例模式
01
設計模式
1.1 設計模式簡介
設計模式是解決特定問題的解決方案。
設計模式的優點:
1 可以在多個項目重復使用。
2 問題可以在架構級別來解決。
3 經過了時間的驗證和良好的證明,是開發人員和架構師的寶貴經驗。
4 具有可靠性和依賴性。
為了更好地認識設計模式,我們先理解這些術語。
1 代碼段:用某種語言編寫的一段具有特定用途的代碼。例如,Python語言鏈接數據庫的代碼段。
2 設計:用來解決特定問題的優秀解決方案。
3 標準:一種解決某類問題的方法,非常通用,并且適用于當前的情況。
4 模式:一個經過時間考驗的、高效、可擴展的解決方案,能夠解決一類已知問題。
1.2 設計模式分類
GoF在他們的設計模式書籍《Design Patterns: Elements of Reusable Object-Oriented Software》中講到了23種設計模式,分為三類。
1 創建型模式
2 結構型模式
3 行為型模式
模式的分類主要基于對象的創建、軟件應用程序中類和對象的構造方式,還涉及對象之間的交互方式。
創建型模式的性質。
1 它們的運行機制基于對象的創建方式。
2 它們將對象創建的細節隔離開來。
3 代碼與所創建的對象類型無關。
單例模式就是創建型模式的一個例子。
結構型模式的性質。
1 致力于設計出通過組合獲得更強大功能的對象和類的結構。
2 重點是簡化結構并識別類和對象之間的關系。
3 它們主要關注類的繼承和組合。
適配器模式就是結構型模式的一個例子。
行為型模式的性質。
1 關注對象之間的交互以及對象的響應性。
2 對象應該能夠交互,同時仍然保持松散耦合。
設計模式的學習和理解,需要我們對面向對象編程OOP有一定的認識。
Python語言學習:面向對象編程,這篇文章介紹OOP的基本知識。
1.3 面向對象設計原則
面向對象設計原則,有利于我們深入學習和理解設計模式。遵循和應用好這些原則,可以讓我們軟件架構、設計和實現更健壯、穩定、靈活、強大。
1 開放/封閉原則
開放/封閉原則,類和對象及其方法對于擴展來說,是開放的;對于修改來說,是要封閉的。
這個原則的優點。
1 現有的類不會被修改,因此退化的可能性較小。
2 有助于保持以前代碼的向后兼容性。
2 控制反轉原則
控制反轉原則,高層級的模塊不應該依賴于低層級的模塊,它們應該依賴于抽象。任何兩個模塊都不應以緊密的方式相互依賴。
這個原則的優點。
1 消弱了模塊間的緊耦合,因此消除了系統中的復雜性。
2 由于依賴模塊之間有一個明確的抽象層(由鉤子或參數提供),因此便于通過更好的方式處理模塊之間的依賴關系。
3 接口隔離原則
接口隔離原則,客戶端不應該依賴于它們不需要使用的接口。
這個原則的優點。
1 它強制開發人員編寫瘦身型接口,并使方法與接口緊密無關。
2 防止向接口中隨意填寫方法。
4 單一職責原則
單一職責原則,類的職責單一,引起類變化的原因單一。
這個原則的優點。
1 每當一個功能發生變化時,除了特定類需要改變外,其他類無需變動。
2 如果一個類有多種功能,那么依賴它的類必定會由于多種原因而經歷多次修改,這是應該避免的。
5 替換原則
替換原則,派生類必須能夠完全取代基類。
02
單例設計模式
單例設計模式是最簡單和最著名的一種創建型設計模式。
單例設計模式意圖:
1 確保類有且只有一個對象被創建。
2 為對象提供一個訪問點,以使程序可以全局訪問對象。
3 控制共享資源的并行訪問。
單例設計模式應用場景:
1 打印機后臺處理程序
2 數據庫操作程序
等等。
單例模式參考代碼。
class?Singleton(object):def?__new__(cls,?*args,?**kwargs):if?not?hasattr(cls,?"instance"):cls.instance?=?super().__new__(cls)return?cls.instances?=?Singleton() print("Object?created",?s)s1?=?Singleton() print("Object?created",?s1)運行結果
往期精彩回顧適合初學者入門人工智能的路線及資料下載(圖文+視頻)機器學習入門系列下載中國大學慕課《機器學習》(黃海廣主講)機器學習及深度學習筆記等資料打印《統計學習方法》的代碼復現專輯 AI基礎下載機器學習交流qq群955171419,加入微信群請掃碼:總結
以上是生活随笔為你收集整理的【Python】Python语言学习:设计模式、单例模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: flex弹性布局笔记
- 下一篇: java 并发 变量_实例讲解Java并