设计模式以外观模式-引导篇及原理

外观模式-引导篇及原理java


来看看司小司的新项目-家庭影院控制接口项目ide

document_image_rId9.png

家庭影院设备:测试

DVD播放器、投影仪、自动屏幕、环绕立体声、爆米花机等等。spa

对于的类对象:DVDPlayer、Projector、Stereo、Popcorn、Screen、TheaterLights etc...设计

类图以下:orm

document_image_rId10.png

咱们知道,这些设备须要遥控器,同时这些设备都对外提供了接口。若是一个设备一个遥控器是否是很麻烦。如今需求是,为了方便省事。只须要一个设备来处理。对象

来源:凯哥Java(kaigejava)接口

咱们先来看看传统的控制接口设计,步骤以下图:get

document_image_rId11.png

看一场家庭影院,还这么多步骤。确实很麻烦。咱们来分析:爆米花机能够看做是一个子系统、投影仪是一个子系统、音响能够看做是一个子系统等等。咱们将各个设备都单独的看做是一个子系统,咱们就会发现,这些子系统或许存在着内部关联关系或者是须要统筹协调工做的。有没有更好的解决方案呢?博客


司小司调研以后,决定使用外观模式这种设计模来实现这种需求。咱们先来看看外观模式是什么。

咱们能够将以上各个设备相识或者有关联的操做放到一个方法中,而后对外在提供统一的一个对象接口。这样,好比说,咱们先要准备:爆米花机开机、投影仪开机、屏幕自动放下这一组操做放到一个方法中。DVD碟片选择、灯光调暗、播放DVD这一组操做放到一个方法中。关闭各类设备操做放到一个方法中。最后咱们就获得了以下的类图:

document_image_rId12.png

通过上面分析,咱们能够知道:

外观模式:对外提供了一个统一的接口,来访问子系统中一群功能相关接口。

外观模式定义了一个高层接口,让子系统更容易使用。

咱们来看看代码结构:

document_image_rId13.png

说明:

爆米花机、投影仪、屏幕等咱们使用的都是单例模式。由于这些东西,一个家庭一个就能够了。因此这里就使用了单例模式来处理的。

凯哥我的博客:www.kaigejava.com

凯哥公众号:凯哥Java(kaigejava)

在测试类中:

咱们调用了准备及播放功能。运行结果:

咱们发现,对外提供接口解耦提升了。

相关文章
相关标签/搜索