1. 【Python】Python語言學(xué)習(xí):設(shè)計模式、單例模式

        共 1945字,需瀏覽 4分鐘

         ·

        2022-02-17 05:56

        01

        設(shè)計模式

        1.1 設(shè)計模式簡介

        設(shè)計模式是解決特定問題的解決方案。

        設(shè)計模式的優(yōu)點

        • 1 可以在多個項目重復(fù)使用。

        • 2 問題可以在架構(gòu)級別來解決。

        • 3 經(jīng)過了時間的驗證和良好的證明,是開發(fā)人員和架構(gòu)師的寶貴經(jīng)驗。

        • 4 具有可靠性和依賴性。

        為了更好地認識設(shè)計模式,我們先理解這些術(shù)語。

        • 1 代碼段:用某種語言編寫的一段具有特定用途的代碼。例如,Python語言鏈接數(shù)據(jù)庫的代碼段。

        • 2 設(shè)計:用來解決特定問題的優(yōu)秀解決方案。

        • 3 標準:一種解決某類問題的方法,非常通用,并且適用于當前的情況。

        • 4 模式:一個經(jīng)過時間考驗的、高效、可擴展的解決方案,能夠解決一類已知問題。

        1.2 設(shè)計模式分類

        GoF在他們的設(shè)計模式書籍《Design Patterns: Elements of Reusable Object-Oriented Software》中講到了23種設(shè)計模式,分為三類。

        • 1 創(chuàng)建型模式

        • 2 結(jié)構(gòu)型模式

        • 3 行為型模式

        模式的分類主要基于對象的創(chuàng)建、軟件應(yīng)用程序中類和對象的構(gòu)造方式,還涉及對象之間的交互方式。

        創(chuàng)建型模式的性質(zhì)。

        • 1 它們的運行機制基于對象的創(chuàng)建方式。

        • 2 它們將對象創(chuàng)建的細節(jié)隔離開來。

        • 3 代碼與所創(chuàng)建的對象類型無關(guān)。
          單例模式就是創(chuàng)建型模式的一個例子。

        結(jié)構(gòu)型模式的性質(zhì)。

        • 1 致力于設(shè)計出通過組合獲得更強大功能的對象和類的結(jié)構(gòu)。

        • 2 重點是簡化結(jié)構(gòu)并識別類和對象之間的關(guān)系。

        • 3 它們主要關(guān)注類的繼承和組合。
          適配器模式就是結(jié)構(gòu)型模式的一個例子。

        行為型模式的性質(zhì)。

        • 1 關(guān)注對象之間的交互以及對象的響應(yīng)性。

        • 2 對象應(yīng)該能夠交互,同時仍然保持松散耦合。

        設(shè)計模式的學(xué)習(xí)和理解,需要我們對面向?qū)ο缶幊蘋OP有一定的認識。
        Python語言學(xué)習(xí):面向?qū)ο缶幊?/strong>,這篇文章介紹OOP的基本知識。

        1.3 面向?qū)ο笤O(shè)計原則

        面向?qū)ο笤O(shè)計原則,有利于我們深入學(xué)習(xí)和理解設(shè)計模式。遵循和應(yīng)用好這些原則,可以讓我們軟件架構(gòu)、設(shè)計和實現(xiàn)更健壯、穩(wěn)定、靈活、強大。

        1 開放/封閉原則

        開放/封閉原則,類和對象及其方法對于擴展來說,是開放的;對于修改來說,是要封閉的。
        這個原則的優(yōu)點。

        • 1 現(xiàn)有的類不會被修改,因此退化的可能性較小。

        • 2 有助于保持以前代碼的向后兼容性。

        2 控制反轉(zhuǎn)原則

        控制反轉(zhuǎn)原則,高層級的模塊不應(yīng)該依賴于低層級的模塊,它們應(yīng)該依賴于抽象。任何兩個模塊都不應(yīng)以緊密的方式相互依賴。
        這個原則的優(yōu)點。

        • 1 消弱了模塊間的緊耦合,因此消除了系統(tǒng)中的復(fù)雜性。

        • 2 由于依賴模塊之間有一個明確的抽象層(由鉤子或參數(shù)提供),因此便于通過更好的方式處理模塊之間的依賴關(guān)系。

        3 接口隔離原則

        接口隔離原則,客戶端不應(yīng)該依賴于它們不需要使用的接口。
        這個原則的優(yōu)點。

        • 1 它強制開發(fā)人員編寫瘦身型接口,并使方法與接口緊密無關(guān)。

        • 2 防止向接口中隨意填寫方法。

        4 單一職責原則

        單一職責原則,類的職責單一,引起類變化的原因單一。
        這個原則的優(yōu)點。

        • 1 每當一個功能發(fā)生變化時,除了特定類需要改變外,其他類無需變動。

        • 2 如果一個類有多種功能,那么依賴它的類必定會由于多種原因而經(jīng)歷多次修改,這是應(yīng)該避免的。

        5 替換原則

        替換原則,派生類必須能夠完全取代基類。

        02

        單例設(shè)計模式

        單例設(shè)計模式是最簡單和最著名的一種創(chuàng)建型設(shè)計模式。

        單例設(shè)計模式意圖

        • 1 確保類有且只有一個對象被創(chuàng)建。

        • 2 為對象提供一個訪問點,以使程序可以全局訪問對象。

        • 3 控制共享資源的并行訪問。

        單例設(shè)計模式應(yīng)用場景

        • 1 打印機后臺處理程序

        • 2 數(shù)據(jù)庫操作程序
          等等。

        單例模式參考代碼。

        class?Singleton(object):

        ????def?__new__(cls,?*args,?**kwargs):
        ????????if?not?hasattr(cls,?"instance"):
        ????????????cls.instance?=?super().__new__(cls)
        ????????return?cls.instance


        s?=?Singleton()
        print("Object?created",?s)

        s1?=?Singleton()
        print("Object?created",?s1)

        運行結(jié)果


        往期精彩回顧




        瀏覽 134
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
          
          

            1. 囯产一级a一级a免费视频 | 手机看片亚洲 | 久热精品在线视频 | 欧美高潮喷水视频 | 亚洲性天堂 |