【Python】使用smtplib模組發郵件報錯“smtplib.SMTPDataError: 554, 5.2.0”
阿新 • • 發佈:2021-07-29
外觀(Facade)模式又叫作門面模式,是一種通過為多個複雜的子系統提供一個一致的介面,而使這些子系統更加容易被訪問的模式。該模式對外有一個統一介面,外部應用程式不用關心內部子系統的具體細節,這樣會大大降低應用程式的複雜度,提高了程式的可維護性。
在日常編碼工作中,我們都在有意無意的大量使用外觀模式。只要是高層模組需要排程多個子系統(2個以上的類物件),我們都會自覺地建立一個新的類封裝這些子系統,提供精簡的介面,讓高層模組可以更加容易地間接呼叫這些子系統的功能。尤其是現階段各種第三方SDK、開源類庫,很大概率都會使用外觀模式。
外觀(Facade)模式是“迪米特法則”的典型應用,它有以下主要優點。
-
降低了子系統與客戶端之間的耦合度,使得子系統的變化不會影響呼叫它的客戶類。
-
對客戶遮蔽了子系統元件,減少了客戶處理的物件數目,並使得子系統使用起來更加容易。
-
降低了大型軟體系統中的編譯依賴性,簡化了系統在不同平臺之間的移植過程,因為編譯一個子系統不會影響其他的子系統,也不會影響外觀物件。
外觀(Facade)模式的主要缺點如下。
-
不能很好地限制客戶使用子系統類,很容易帶來未知風險。
-
增加新的子系統可能需要修改外觀類或客戶端的原始碼,違背了“開閉原則”。
外觀模式的結構與實現
外觀(Facade)模式的結構比較簡單,主要是定義了一個高層介面。它包含了對各個子系統的引用,客戶端可以通過它訪問各個子系統的功能。現在來分析其基本結構和實現方法。
1. 模式的結構
外觀(Facade)模式包含以下主要角色。
-
外觀(Facade)角色:為多個子系統對外提供一個共同的介面。
-
子系統(Sub System)角色:實現系統的部分功能,客戶可以通過外觀角色訪問它。
-
客戶(Client)角色:通過一個外觀角色訪問各個子系統的功能。