通俗易懂設計模式解析——外觀模式

前言

  今天一塊兒來看看外觀模式,外觀模式也是咱們介紹的結構型設計模式的第五個模式了。外觀外表,有句話是這麼說的人靠衣裝 佛靠金裝。打扮的好,整理的好。外觀靠上去整整齊齊,精氣神一下就上來了。在開發中依然如此。客戶端完成一個功能,可能須要調用許多的接口來配合。按照開發邏輯一個一個依次對接下來。客戶端代碼複雜,看上去一團糟。不說其餘的,就表面上看起來就不怎麼好吧。那麼不如咱們把調用的接口進行再次的封裝。統一規範。這樣整理下來。客戶端就明瞭多了。設計模式

外觀模式介紹

1、來由

  在軟件系統開發中,咱們常常會遇到客戶端與內部子系統進行負責耦合的狀況。從而致使客戶端隨着子系統的變化而變化。爲了解決客戶端與子系統直接的高耦合,而且簡化接口的調用。也就有了外觀模式。bash

2、意圖

  爲子系統中的一組接口提供一個一致的界面,外觀模式定義了一個高層接口,這個接口使得這一子系統更加容易使用。架構

3、案例圖

4、外觀模式代碼示例

  看上面咱們發現外觀模式包含如下角色:spa

    外觀角色:在客戶端調用外觀角色的方法,其中與一個或多個子系統相關聯。在運行狀況下,客戶端請求傳遞到外觀角色而後傳遞給對應的子系統。架構設計

    子系統:在軟件系統中包含一個或者多個子系統,子系統能夠單獨被客戶端調用,子系統不知道外觀角色的存在。相對而言,也能夠當外觀角色爲客戶端。設計

  咱們看這麼一個案例,經過案例咱們來詳細瞭解外觀模式究竟是怎麼一回事以及如何運行的。例如咱們如今有的軟件系統。新用戶在輸入手機號填入驗證碼就登陸註冊都搞定了。同時還附加了一些第一次登陸註冊的獎勵。若是不按外觀模式來的話,咱們在登陸按鈕後面的客戶端依次調用了註冊、登陸、贈送獎勵等等方法。那麼咱們看看外觀模式如何解決呢:3d

namespace Facade_Pattern
{ 

    #region 外觀角色
    public class FacadePattern
    {
        private RegisteredClass registeredClass;
        private LoginClass loginClass;
        private SendClass sendClass;
        public FacadePattern() 
        {
             registeredClass = new RegisteredClass();
            loginClass = new LoginClass();
            sendClass = new SendClass();
        }
        public  void LoginFirst() 
        {
            registeredClass.Registered();
            loginClass.Login();
            sendClass.Send();
        }
    }
    #endregion

    #region 子系統
    public class RegisteredClass 
    {
        public  void Registered() 
        {
            Console.WriteLine("註冊成功");
        }
    }
    public class LoginClass 
    {
        public  void Login()
        {
            Console.WriteLine("登陸成功");
        }
    }
    public class SendClass 
    {
        public  void Send()
        {
            Console.WriteLine("贈送成功");
        }
    }
    #endregion
}複製代碼

class Program
    {
        static void Main(string[] args)
        {
            //第一次註冊登陸
            FacadePattern facadePattern = new FacadePattern();
            facadePattern.LoginFirst();
             
        }
    }複製代碼

使用場景及優缺點

  在軟件開發中,外觀模式提供了一個統一的接口,用來訪問那麼一羣接口,至關與外觀模式是一個高層接口,使子系統使用更加方便,避免了客戶端與子系統之間的緊耦合。客戶端直接經過調用外觀角色就能夠調用子系統中的方法了。code

1、使用場景

一、爲複雜的模塊或子模塊提供外界訪問的模塊cdn

二、提供子系統的獨立性對象

三、在井井有條的結構下可使用外觀模式提供入口。三層架構就是這樣的

2、優勢

一、減小了系統間的相互依賴

二、提升了靈活性,簡化了接口,使用更加方便了

3、缺點

一、不符合開閉原則,若是要修改較爲麻煩

總結

  到這裏外觀模式就介紹完了,外觀模式爲一個或者多個子系統提供一個統一的接口,該模式定義了一個高層,使得使用子系統更加方便容易。而且外觀模式能夠解決層次分離結構,下降客戶端與子系統之間的耦合。對於外觀模式側重點是整個系統的一種架構設計,與之相比咱們能夠看看結構型的四種設計模式。適配器模式——注重接口轉換,達到適配使用。橋接模式——注重分離現象與實現,並聯合。裝飾模式——注重動態的增長職責功能。組合模式——注重部分—總體,對對象進行擴展。

  人都有以第一印象定好壞的習慣,認爲一我的好時,就會愛屋及烏,認爲一我的很差時,就會全盤否定。 

相關文章
相關標籤/搜索