1. 程式人生 > 其它 >使用者案例 | 騰訊小視訊&轉碼平臺雲原生容器化之路

使用者案例 | 騰訊小視訊&轉碼平臺雲原生容器化之路

編輯說明

概述

為子系統中的一組介面提供一個一致的介面,此模式定義了一個高層介面,為這個介面使用

外觀模式也可以叫為門面模式,應用場景也比較明確,主要在介面設計方面使用

結構圖

程式碼實現

子系統

    /// <summary>
    /// 子系統一
    /// </summary>
    public class SubSystemOne
    {
        public void MethodOne()
        {
            Console.WriteLine(" 子系統方法一");
        }
    }
    /// <summary>
/// 子系統二 /// </summary> public class SubSystemTwo { public void MethodTwo() { Console.WriteLine(" 子系統方法二"); } }
    /// <summary>
    /// 子系統三
    /// </summary>
    class SubSystemThree
    {
        public void MethodThree()
        {
            Console.WriteLine(
" 子系統方法三"); } }
    /// <summary>
    /// 子系統四
    /// </summary>
    public class SubSystemFour
    {
        public void MethodFour()
        {
            Console.WriteLine(" 子系統方法四");
        }
    }

外觀類

  /// <summary>
    /// 外觀類
    /// </summary>
    public class Facade
    {
        SubSystemOne one;
        SubSystemTwo two;
        SubSystemThree three;
        SubSystemFour four;

        
public Facade() { one = new SubSystemOne(); two = new SubSystemTwo(); three = new SubSystemThree(); four = new SubSystemFour(); } public void MethodA() { Console.WriteLine("\n方法組A() ---- "); one.MethodOne(); two.MethodTwo(); four.MethodFour(); } public void MethodB() { Console.WriteLine("\n方法組B() ---- "); two.MethodTwo(); three.MethodThree(); } }

客戶端

    class Program
    {
        static void Main(string[] args)
        {
            Facade facade = new Facade();
            facade.MethodA();
            facade.MethodB();
            Console.Read();
        }
    }

執行結果

優勢

符合迪米特法則(最少知識原則)

隱藏系統的複雜性,提供精簡的訪問方法,讓高層模組可以更加容易地間接呼叫這些子系統的功能。

減少系統相互依賴

提高靈活性

提高了安全性

降低了大型軟體系統中的編譯依賴性,簡化了系統在不同平臺之間的移植過程

使用場景

階段各種第三方SDK、開源類庫的使用

為複雜的模組或子系統提供外界訪問的模組。

子系統相對獨立。

預防低水平人員帶來的風險。

解決易用性問題

通過將多個介面呼叫替換為一個門面介面呼叫,減少網路通訊成本,提高 客戶端的響應速度

解決分散式事務問題。讓兩個不同的介面達到事務執行要引入很多機制非常複雜,要是再用一個介面包裹這來兩個介面來做處理就會比較簡單

缺陷

不符合開閉原則,如果要改東西很麻煩,繼承重寫都不合適。

Demo