星空网 > 软件开发 > Java

Java设计模式之外观模式

 一、简介

    外观模式(Facade),隐藏内部各子系统的细节与复杂性,向客户端提供一个同一的调用接口,使得复杂系统易于被访问和使用。

 

Java设计模式之外观模式

     外观模式,简单点讲就是把复杂的各个子系统组合成一个接口,提供给客户使用。如上图,主要涉及3个重要角色:

1、子系统角色:实现子系统的逻辑功能。对于客户端来说是未知的,子系统之间可以有交互。

2、门户角色:核心角色。供客户端调用,熟悉内部子系统功能。根据客户需求对子系统进行功能对组合,抽象为一个接口。

3、客户角色:通过调用Facade接口来完成要实现的功能

 

二、实战

    假设有一栋别墅,里面有很多门,比如卧室门、大厅门、厨房门,主人出远门之前必须要把这些门关上,一般的做法就是一个一个关上,如果采用外观模式,可以提供一个总开关,统一对所有门进行开关控制。

首先定义一个关门操作的接口:

public interface Door { public void closeDoor();}

  

卧室门、大厅门、厨房门分别创建一个类,实现Door接口:

public class BedroomDoor implements Door { public void closeDoor() {  System.out.println("closing bedroom door."); }}
public class KitchenDoor implements Door { public void closeDoor() {  System.out.println("closing kitchen door."); }}
public class HallDoor implements Door { public void closeDoor() {  System.out.println("closing hall door."); }}

 

门面类,对各种门的关门操作进行组合或者合并,只提供唯一的接口

public class DoorFacade {  Door bd = new BedroomDoor(); Door kd = new KitchenDoor(); Door hd = new HallDoor();  public void closeDoor() {  bd.closeDoor();  kd.closeDoor();  hd.closeDoor(); }}

  

客户端,通过调用门面类的接口即可将所有的门关闭

public class Client { public static void main(String[] args) {  DoorFacade facade = new DoorFacade();  facade.closeDoor(); }}

  

运行结果: 

Java设计模式之外观模式

 

 三、优点

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

 2、简单易用:客户端根本不需要知道子系统内部的实现,或者根本不需要知道子系统内部的构成,它只需要跟Facade类交互即可;

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

 

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

关键词:JAVA

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

杭州到淄博旅游攻略 淄博到杭州自驾多少时间:https://www.vstour.cn/a/391218.html
东莞凤凰山森林公园怎么去景点介绍和门票价格:https://www.vstour.cn/a/391219.html
杭州必去十大名饭店(品尝杭州美食必去的餐厅推荐):https://www.vstour.cn/a/391220.html
新疆有名的景点 新疆著名景点:https://www.vstour.cn/a/391221.html
全球销冠苹果 为啥在中国卖不动了? :https://www.kjdsnews.com/a/1838218.html
全球销冠苹果 为啥在中国卖不动了? :https://www.xlkjsw.com/news/77007.html
石象湖景区门票-石象湖景区门票优惠政策:https://www.vstour.cn/a/411243.html
北京到嵩山自驾游沿途景点 北京距离嵩山有多远:https://www.vstour.cn/a/411244.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流