1. 1 不可撤销
  2. 2 小年兽 程嘉敏
  3. 3 手放开 李圣杰
  4. 4 迷人的危险3(翻自 dance flow) FAFA
  5. 5 山楂树之恋 程佳佳
  6. 6 summertime cinnamons / evening cinema
  7. 7 不谓侠(Cover 萧忆情Alex) CRITTY
  8. 8 神武醉相思(翻自 优我女团) 双笙
  9. 9 空山新雨后 音阙诗听 / 锦零
  10. 10 Wonderful U (Demo Version) AGA
  11. 11 广寒宫 丸子呦
  12. 12 陪我看日出 回音哥
  13. 13 春夏秋冬的你 王宇良
  14. 14 世界が终わるまでは… WANDS
  15. 15 多想在平庸的生活拥抱你 隔壁老樊
  16. 16 千禧 徐秉龙
  17. 17 我的一个道姑朋友 双笙
  18. 18 大鱼  (Cover 周深) 双笙
  19. 19 霜雪千年(Cover 洛天依 / 乐正绫) 双笙 / 封茗囧菌
  20. 20 云烟成雨(翻自 房东的猫) 周玥
  21. 21 情深深雨濛濛 杨胖雨
  22. 22 Five Hundred Miles Justin Timberlake / Carey Mulligan / Stark Sands
  23. 23 斑马斑马 房东的猫
  24. 24 See You Again Wiz Khalifa / Charlie Puth
  25. 25 Faded Alan Walker / Iselin Solheim
  26. 26 Natural J.Fla
  27. 27 New Soul Vox Angeli
  28. 28 ハレハレヤ(朗朗晴天)(翻自 v flower) 猫瑾
  29. 29 像鱼 王贰浪
  30. 30 Bye Bye Bye Lovestoned
  31. 31 Blame You 眠 / Lopu$
  32. 32 Believer J.Fla
  33. 33 书信 戴羽彤
  34. 34 柴 鱼 の c a l l i n g【已售】 幸子小姐拜托了
  35. 35 夜空中最亮的星(翻自 逃跑计划) 戴羽彤
  36. 36 慢慢喜欢你 LIve版(翻自 莫文蔚) 戴羽彤
  37. 37 病变(翻自 cubi) 戴羽彤
  38. 38 那女孩对我说 (完整版) Uu
  39. 39 绿色 陈雪凝
  40. 40 月牙湾 LIve版(翻自 F.I.R.) 戴羽彤
夜空中最亮的星(翻自 逃跑计划) - 戴羽彤
00:00 / 04:10

夜空中最亮的星 能否听清

那仰望的人 心底的孤独和叹息

夜空中最亮的星 能否记起

那曾与我同行 消失在风里的身影

我祈祷拥有一颗透明的心灵

和会流泪的眼睛

给我再去相信的勇气

越过谎言去拥抱你

每当我找不到存在的意义

每当我迷失在黑夜里

噢喔喔 夜空中最亮的星

请指引我靠近你

夜空中最亮的星 是否知道

那曾与我同行的身影 如今在哪里

夜空中最亮的星 是否在意

是等太阳先升起 还是意外先来临

我宁愿所有痛苦都留在心底

也不愿忘记你的眼睛

哦 给我再去相信的勇气

哦 越过谎言去拥抱你

每当我找不到存在的意义

每当我迷失在黑夜里

噢喔喔 夜空中最亮的星

请照亮我向前行 哒~

我祈祷拥有一颗透明的心灵

和会流泪的眼睛 哦

给我再去相信的勇气

哦 越过谎言去拥抱你

每当我找不到存在的意义

每当我迷失在黑夜里

噢喔喔 夜空中最亮的星

请照亮我向前行

设计模式详解——外观模式

前言

今天我们来看另一个改变接口的设计模式,不过它改变接口的原因是为了简化接口。这个模式被巧妙地叫做外观模式,之所以这么称呼,是因为它将一个或多个类的复杂的实现都藏在了背后,只显露出一个干净美好的外观。好了,下面我们就来展开分享下。

外观模式

外观模式提供了一个统一的接口,用来访问子系统中的一群接口,它定义了一个高层接口,让子系统更容易使用。下面是外观模式的一个模型图,核心的元素有三个,一个客户端,一个外观模式,另一块是很繁杂的子系统,其中外观模式这一层,主要是简化子系统的接口,为客户端提供更简洁的调用:

要点

  • 当需要简化并统一一个很大的接口或者一群复杂的接口时,使用外观模式
  • 实现一个外观模式,需要将子系统组合进外观中,然后将工作委托给子系统执行
  • 外观将客户从一个复杂的子系统中解耦

示例代码

下面我们通过一个很形象的日常生活示例,来说明外观模式具体的应用场景。

我们可以想象这样一个场景:下班回到家,你想看个电影,放松一下,但是你并没有感觉到很开心。因为考虑到要拖地,而且家里水壶还没水了,你还要烧个热水,还有自己找电影,想到这一切的一切,你突然放弃了想看电影的想法。

因为在正常情况下,每一步都要自己亲自操作:首先先打开家里的扫地机器人(这已经算高端了),然后接水烧水,之后才能打开电脑、找电影,整个过程操作完之后,你才能开始看电影,但是这时候你可能会感觉到更加疲惫。

但是假如,突然有一天你的生活开启了外观模式,那整个场景就完全不一样了。这时候回到家,你只需要一键操作,扫地、烧水、找电影都可以一气呵成,这样你就可以直接看自己喜欢的电影了,岂不是美滋滋!

下面我们就来详细看下这个一气呵成的方法,具体如何用代码来实现:

扫地操作

正常情况下,你要自己用扫把扫地,如果是扫地机器人的话,你至少需要启动下开关

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();
    }

然后我们就可以愉快地看电影了:

和适配器比较

  • 外观模式不只是简化了接口,也将客户从组件的子系统中解耦
  • 外观模式和适配器模式可以包装许多类,但是外观模式的意图是简化接口,而适配器的意图是将接口转换成不同的接口

总结

从上面的示例代码,以及我们举的生活中的例子,我们可以很清楚地看到,外观模式本质上就是整合接口,为客户端提供一个更简洁的接口。现实生活中,外观模式的例子还有很多,特别是在现在这种智能时代,比如小爱同学、小度以及我们的手机智能助手等,都是典型的外观模式。从这一点上来讲,人工智能确实改变了我们的生活,让生活的繁杂开始变得简单,语音搜索、语音控制各类电器……万物互联,真的是指日可待!

好了,关于外观模式我们就说这么多,总体来看这块的内容也确实不过。

posted @ 2021-10-15 22:06  云中志  阅读(25)  评论(0编辑  收藏  举报