首頁>Club>
有沒有具體例子講講這些設計模式都用在哪些場景?
6
回覆列表
  • 1 # 江蘇優就業

    單例模式:Python 的單例模式最好不要藉助類(在 Java 中藉助類是因為 Java 所有程式碼都要寫在類中),而是透過一個模組來實現。一個模組的模組內全域性變數、模組內全域性函式,組合起來就是一個單例物件了。模板方法模式:這個可以像其他語言一樣實現,但是如果要遵循鴨子型別原則的話,應該刪除公有的抽象父類(或介面),從而追求靈活性。工廠方法模式、

    多例模式:這個也不用藉助類,直接寫一個全域性函式作為工廠函式即可。因為 Python 中例項化是透過 call 類來完成的,現在改成 call 工廠函式,對客戶摳碼者是透明的。(從這點我表示理解 Python 沒有 new 運算子的好處了,使用通用的 call 定義,正交性極強)裝飾器模式、代理模式:這個接觸過 Python 就不會不知道了,Python 內建的 decorator 語法如此著名。裝飾器模式和代理模式都可以透過這種方式完成。另外一種是對物件的裝飾或代理,這個也不需要按照契約程式設計的風格,讓代理物件實現被代理物件的抽象。一切動態代理,只需要透過過載屬性訪問運算子,神馬都簡單了(和 PHP 透過 __get、__set、__call 來實現動態代理很類似)。

    原型模式:這個在 Python 中實現的不是那麼爽快,需要呼叫 copy 來克隆原型物件。但是其實有另一種實現方式:之所以使用原型模式,是因為物件初始化需要較大開銷。我們只需要儲存初始化的結果,並在產生新物件的時候賦予新物件即可。所以,透過元類控制物件被建立的過程,來實現原型模式,也是一種選擇。

  • 中秋節和大豐收的關聯?
  • 怎麼用借字法創編字謎?