1. 設計模式詳解——外觀模式

        共 2112字,需瀏覽 5分鐘

         ·

        2021-10-16 15:31

        前言

        今天我們來看另一個改變接口的設計模式,不過它改變接口的原因是為了簡化接口。這個模式被巧妙地叫做外觀模式,之所以這么稱呼,是因為它將一個或多個類的復雜的實現(xiàn)都藏在了背后,只顯露出一個干凈美好的外觀。好了,下面我們就來展開分享下。

        外觀模式

        外觀模式提供了一個統(tǒng)一的接口,用來訪問子系統(tǒng)中的一群接口,它定義了一個高層接口,讓子系統(tǒng)更容易使用。下面是外觀模式的一個模型圖,核心的元素有三個,一個客戶端,一個外觀模式,另一塊是很繁雜的子系統(tǒng),其中外觀模式這一層,主要是簡化子系統(tǒng)的接口,為客戶端提供更簡潔的調(diào)用:

        要點

        • 當需要簡化并統(tǒng)一一個很大的接口或者一群復雜的接口時,使用外觀模式
        • 實現(xiàn)一個外觀模式,需要將子系統(tǒng)組合進外觀中,然后將工作委托給子系統(tǒng)執(zhí)行
        • 外觀將客戶從一個復雜的子系統(tǒng)中解耦

        示例代碼

        下面我們通過一個很形象的日常生活示例,來說明外觀模式具體的應用場景。

        我們可以想象這樣一個場景:下班回到家,你想看個電影,放松一下,但是你并沒有感覺到很開心。因為考慮到要拖地,而且家里水壺還沒水了,你還要燒個熱水,還有自己找電影,想到這一切的一切,你突然放棄了想看電影的想法。

        因為在正常情況下,每一步都要自己親自操作:首先先打開家里的掃地機器人(這已經(jīng)算高端了),然后接水燒水,之后才能打開電腦、找電影,整個過程操作完之后,你才能開始看電影,但是這時候你可能會感覺到更加疲憊。

        但是假如,突然有一天你的生活開啟了外觀模式,那整個場景就完全不一樣了。這時候回到家,你只需要一鍵操作,掃地、燒水、找電影都可以一氣呵成,這樣你就可以直接看自己喜歡的電影了,豈不是美滋滋!

        下面我們就來詳細看下這個一氣呵成的方法,具體如何用代碼來實現(xiàn):

        掃地操作

        正常情況下,你要自己用掃把掃地,如果是掃地機器人的話,你至少需要啟動下開關

        public?class?Broom?{
        ????public?void?sweepFloor()?{
        ????????System.out.println("掃帚正在掃地!");
        ????}
        }
        燒水操作

        燒水操作也一樣,你要用水壺接水,然后燒水

        public?class?Kettle?{
        ????public?void?boilWater()?{
        ????????System.out.println("燒水壺正在接水!");
        ????????System.out.println("燒水壺正在燒水!");
        ????}
        }
        搜索電影操作

        緊接著你還要自己搜索電影,然后才能開始看電影

        public?class?Computer?{
        ????public?void?searchVideo()?{
        ????????System.out.println("電腦正在查找電影!");
        ????????System.out.println("電腦查找電影完成!");
        ????}
        }
        外觀模式

        但是如果你的生活啟用了外觀模式,僅需一鍵操作,就可以完成以上操作,同時開始看電影,感覺這個痛苦的過程一下就消失了呢,是不是一下就感覺美滋滋了呢!

        public?class?SystemFacade?{
        ????Broom?broom?=?new?Broom();
        ????Kettle?kettle?=?new?Kettle();
        ????Computer?computer?=?new?Computer();

        ????public?void?facade()?{
        ????????broom.sweepFloor();
        ????????kettle.boilWater();
        ????????computer.searchVideo();
        ????????System.out.println("開始播放電影!");
        ????}
        }
        測試代碼

        好了,下面就讓我們來一鍵操作吧!

        ??@Test
        ????public?void?testFacade()?{
        ????????SystemFacade?facade?=?new?SystemFacade();
        ????????facade.facade();
        ????}

        然后我們就可以愉快地看電影了:

        和適配器比較

        • 外觀模式不只是簡化了接口,也將客戶從組件的子系統(tǒng)中解耦
        • 外觀模式和適配器模式可以包裝許多類,但是外觀模式的意圖是簡化接口,而適配器的意圖是將接口轉(zhuǎn)換成不同的接口

        總結

        從上面的示例代碼,以及我們舉的生活中的例子,我們可以很清楚地看到,外觀模式本質(zhì)上就是整合接口,為客戶端提供一個更簡潔的接口?,F(xiàn)實生活中,外觀模式的例子還有很多,特別是在現(xiàn)在這種智能時代,比如小愛同學、小度以及我們的手機智能助手等,都是典型的外觀模式。從這一點上來講,人工智能確實改變了我們的生活,讓生活的繁雜開始變得簡單,語音搜索、語音控制各類電器……萬物互聯(lián),真的是指日可待!

        好了,關于外觀模式我們就說這么多,總體來看這塊的內(nèi)容也確實不過。

        - END -


        瀏覽 32
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
          
          

            1. 国内精品久久久久影院男同志 | 精品国产黄色 | 久久久久99精品国产片 | 黑人精品欧美一区二区蜜桃 | 国产一级淫片a片奶网站 |