- N +

设计模式之外观模式

设计模式之外观模式原标题:设计模式之外观模式

导读:

亚博体育官网人生赢家亚博体育PC版什么是外观模式? 外观模式(Facade),他隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口。这种类型的设计模式属于结构性模式。为子系统中的一组接口提供了一个统一的...

文章目录 [+]

什么是外观模式

 外观模式(Facade),他隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口。这种类型的设计模式属于结构性模式。为子系统中的一组接口提供了一个统一的访问接口,这个接口使得子系统更容易被访问或者使用。

外观模式意图

外观模式主要是为了为一组接口提供一个一致的界面。从而使得复杂的子系统与用户端分离解耦。

有点类似家庭常用的一键开关,只要按一个键,台灯卧室客厅的灯都亮了。虽然他们各有各自的开关,但是对外用一个来控制。

外观模式应用场景

 1 为复杂系统 提供简单的接口。

 2 客户程序与抽象类的实现部分分离。

 3 构建层次系统时,用作入口。

外观模式角色

这个模式中,设计到3个角色。

  1).门面角色:外观模式的核心。它被客户角色调用,它熟悉子系统的功能。内部根据客户角色的需求预定了几种功能的组合。

  2).子系统角色:实现了子系统的功能。它对客户角色和Facade时未知的。它内部可以有系统内的相互交互,也可以由供外界调用的接口。

  3).客户角色:通过调用Facede来完成要实现的功能。

外观模式优点

- 松散耦合

  使得客户端和子系统之间解耦,让子系统内部的模块功能更容易扩展和维护;

- 简单易用

  客户端根本不需要知道子系统内部的实现,或者根本不需要知道子系统内部的构成,它只需要跟Facade类交互即可。

- 更好的划分访问层次

  有些方法是对系统外的,有些方法是系统内部相互交互的使用的。子系统把那些暴露给外部的功能集中到门面中,这样就可以实现客户端的使用,很好的隐藏了子系统内部的细节。

外观模式-代码讲解

每个电脑都有CPU、Memory、Disk。在电脑开启和关闭的时候,相应的部件也会开启和关闭,所以,使用了该外观模式后,会使用户和部件之间解耦。

/**
?*?
?*?cpu子系统类
?*
?*/
class?CPU?{
????
????
????
????public?void?start()?{
????????System.out.println("cpu?is?start...");
????}

????public?void?shutDown()?{
????????System.out.println("CPU?is?shutDown...");
????}
????
}

/**
?*?
?*?Disk子系统类
?*
?*/
class?Disk?{
????
????public?void?start()?{
????????System.out.println("Disk?is?start...");
????}

????public?void?shutDown()?{
????????System.out.println("Disk?is?shutDown...");
????}
????
}

/**
?*?
?*?Memory子系统类
?*
?*/
class?Memory?{
????
????public?void?start()?{
????????System.out.println("Memory?is?start...");
????}

????public?void?shutDown()?{
????????System.out.println("Memory?is?shutDown...");
????}
????
}

门面类:

//门面类(核心)
public?class?Computer?{
????
????
????private?Disk?disk;
????
????private?CPU??cpu;
????
????private?Memory?memory;
????
????
????Computer(Disk?disk,CPU??cpu,Memory?memory){
????????
????????this.disk=disk;
????????
????????this.cpu=cpu;
????????
????????this.memory=memory;
????
????}
????
????public?void?start()?{
????????
????????disk.start();
????????
????????cpu.start();
????????
????????memory.start();
????????
????}

????public?void?shutDown()?{
????????
????????disk.shutDown();
????????
????????cpu.shutDown();
????????
????????memory.shutDown();
????????
????}
????

}


本文标题:设计模式之外观模式
本文链接:http://www.kyjszj.com/wdzl/24.html
作者授权:除特别说明外,本文由?开源技术之家?原创编译并授权?开源技术之家?刊载发布。
版权声明:本文不使用任何协议授权,您可以任何形式自由转载或使用。

有好的文章希望我们帮助分享和推广,猛戳这里我要投稿

返回列表
上一篇:
下一篇:

发表评论中国互联网举报中心

快捷回复:

    评论列表 (暂无评论,共666人参与)参与讨论

    还没有评论,来说两句吧...