關於python面試中的設計模式,搞懂這些就足夠了
阿新 • • 發佈:2020-12-17
1、什麼是設計模式?
設計模式是經過總結、優化,對我們經常遇到的一些程式設計問題的可重用的解決方案。設計模式不同於類或庫可直接作用於程式碼。相反,它更為的高階,是一種必須在特定的情形下實現的方法模版。
2、面向物件中設計模式的六大原則是什麼?
- 開閉原則:一個軟體實體如類、模組和函式,對擴充套件開放,對修改關閉,即一個軟體實體應該在不修改原有程式碼的基礎上進行擴充套件
- 里氏替換原則:引用父類的地方都應該能透明的呼叫其子類的物件
- 依賴倒置原則:高層模組不應該依賴底層模組,兩者都應該依賴其抽象類,抽象不應該依賴細節,細節依賴抽象,即針對介面程式設計,而非針對細節程式設計
- 介面隔離原則:使用多個專門的介面,而非一個單一的總介面,即客戶端的實現不應該依賴於它無關的介面。
- 迪米特原則:一個軟體實體應該儘可能少的和其它軟體實體相互作用
- 單一職責原則:一個類只負責一項職責
3、列舉幾個常⻅的設計模式?
- 建立模式:提供例項化的方法,為適合的狀況提供建立物件的方法
- 結構化模式:通常用於處理實體之間的關係,使得不同的實體可以更好的協同工作
- 行為模式:為不同的實體建立通訊,為不同的實體之間提供更方便、更靈活的通訊方式
4、Mixin 設計模式是什麼?它的特點和優點?
為了不違背繼承必須是"is-a"的關係同時又能實現多繼承的效果,從而出現了Mixin類,這個類是為了做增強功能新增到子類中
特點:
- 責任明確:必須表示是一種功能,而非一個事物
- 功能單一:如果有多個功能,就寫多個Mixin類
- 絕對獨立:子類不繼承該類,也可以正常工作,只是少一個功能而已
優點:
不使用Mixin會有以下的幾點弊端,使用Mixin可避免
- 結構複雜:單繼承子類的父類是什麼,父類的父類是什麼都是非常明確的;多繼承子類有多個父類,父類又有多個父類,繼承關係複雜
- 優先順序模糊:多繼承中多個父類如果有同名方法,在開發中,容易造成思維混亂,子類不知道繼承哪個父類,增加開發難度
- 功能衝突:多繼承中子類只能繼承多個父類中的一個同名方法,從而導致其它父類的方法失效
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
大家一起來學習討論吧!