1. 程式人生 > 實用技巧 >關於python面試中的設計模式,搞懂這些就足夠了

關於python面試中的設計模式,搞懂這些就足夠了

1、什麼是設計模式?

設計模式是經過總結、優化,對我們經常遇到的一些程式設計問題的可重用的解決方案。設計模式不同於類或庫可直接作用於程式碼。相反,它更為的高階,是一種必須在特定的情形下實現的方法模版。

2、面向物件中設計模式的六大原則是什麼?

  1. 開閉原則:一個軟體實體如類、模組和函式,對擴充套件開放,對修改關閉,即一個軟體實體應該在不修改原有程式碼的基礎上進行擴充套件
  2. 里氏替換原則:引用父類的地方都應該能透明的呼叫其子類的物件
  3. 依賴倒置原則:高層模組不應該依賴底層模組,兩者都應該依賴其抽象類,抽象不應該依賴細節,細節依賴抽象,即針對介面程式設計,而非針對細節程式設計
  4. 介面隔離原則:使用多個專門的介面,而非一個單一的總介面,即客戶端的實現不應該依賴於它無關的介面。
  5. 迪米特原則:一個軟體實體應該儘可能少的和其它軟體實體相互作用
  6. 單一職責原則:一個類只負責一項職責

3、列舉幾個常⻅的設計模式?

  1. 建立模式:提供例項化的方法,為適合的狀況提供建立物件的方法
  2. 結構化模式:通常用於處理實體之間的關係,使得不同的實體可以更好的協同工作
  3. 行為模式:為不同的實體建立通訊,為不同的實體之間提供更方便、更靈活的通訊方式

4、Mixin 設計模式是什麼?它的特點和優點?

為了不違背繼承必須是"is-a"的關係同時又能實現多繼承的效果,從而出現了Mixin類,這個類是為了做增強功能新增到子類中

特點:

  1. 責任明確:必須表示是一種功能,而非一個事物
  2. 功能單一:如果有多個功能,就寫多個Mixin類
  3. 絕對獨立:子類不繼承該類,也可以正常工作,只是少一個功能而已

優點:

不使用Mixin會有以下的幾點弊端,使用Mixin可避免

  1. 結構複雜:單繼承子類的父類是什麼,父類的父類是什麼都是非常明確的;多繼承子類有多個父類,父類又有多個父類,繼承關係複雜
  2. 優先順序模糊:多繼承中多個父類如果有同名方法,在開發中,容易造成思維混亂,子類不知道繼承哪個父類,增加開發難度
  3. 功能衝突:多繼承中子類只能繼承多個父類中的一個同名方法,從而導致其它父類的方法失效

5、什麼是單例模式?單例模式的作用?

單例模式:在整個專案/系統中,一個類只有一個例項的存在

作用:節約記憶體資源

6、單例模式的應用場景有那些?

python的logger、Windows的資源管理器、執行緒池、網站計數器等

7、用python實現單例模式

# 建立一個單例模式

class Singleton(object):
    _instance = None

    def __new__(cls,*args,**kwargs):
        if not cls._instance:
            cls._instance = super(Singleton, cls).__new__(cls,*args,**kwargs)
        return cls._instance

class MyClass(Singleton):
    pass

#新建兩個物件
m1=MyClass()
m2=MyClass()

#驗證兩個物件是否一致
print(m1 is m2)
print(id(m1), id(m2))


本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,如有問題請及時聯絡我們以作處理

想要獲取更多Python學習資料可以加
QQ:2955637827私聊
或加Q群630390733
大家一起來學習討論吧!