设计模式之外观模式(结构型)

举报
yd_273762914 发表于 2020/12/02 22:30:41 2020/12/02
【摘要】 文章目录 一、模式定义二、模式角色三、模式简单分析四、简单例子实践五、模式应用 一、模式定义 外观模式:外观模式就是提供一个统一的接口,用来访问子系统的一群接口。外观模式定义了一个高层接口,让子系统更容易使用。,外观模式也称门面模式,是一种对象结构型设计模式。 二、模式角色 从模式定义可以知道,外观模式应该包含如下角色: Frcade...

一、模式定义

外观模式:外观模式就是提供一个统一的接口,用来访问子系统的一群接口。外观模式定义了一个高层接口,让子系统更容易使用。,外观模式也称门面模式,是一种对象结构型设计模式。

在这里插入图片描述

二、模式角色

从模式定义可以知道,外观模式应该包含如下角色:

  • Frcade:外观角色
  • SubSystem:子系统角色
  • Client:客户端角色

经典例子:

public class Facade
{ private SubSystemA obj1 = new SubSystemA(); private SubSystemB obj2 = new SubSystemB(); private SubSystemC obj3 = new SubSystemC(); public void method() { obj1.method(); obj2.method(); obj3.method(); }
} 


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

三、模式简单分析

外观模式为客户端类提供了便捷,客户端类不需要关注子系统的设计,直接提供外观类访问就好

外观模式符合“迪米特法则”,引入一个单一简单的接口,给客户端调用,从而降低了客户端和子系统的耦合度

不过外观模式也有一些缺点,每一种设计模式都是有缺点和优点的,需要根据复杂的业务场景进行选用。假如没引用一个抽象的外观类的话,一旦业务改变就需要进行外观类和客户端类代码的调整了

在这里插入图片描述

对于一些很复杂的业务系统来说,有时候可以设计多个外观类进行系统解耦

四、简单例子实践

JDBC数据库操作的例子,本例子来自《设计模式》一书

import java.sql.*;

public class JDBCFacade { private Connection conn=null; private Statement statement=null; public void open(String driver,String jdbcUrl,String userName,String userPwd) { try { Class.forName(driver).newInstance(); conn = DriverManager.getConnection(jdbcUrl,userName,userPwd); statement = conn.createStatement(); } catch (Exception e) { e.printStackTrace(); } } public int executeUpdate(String sql) { try { return statement.executeUpdate(sql); } catch (SQLException e) { e.printStackTrace(); return -1; } } public ResultSet executeQuery(String sql) { try { return statement.executeQuery(sql); } catch (SQLException e) { e.printStackTrace(); return null; } } public void close() { try { conn.close(); statement.close(); } catch (SQLException e) { e.printStackTrace(); } }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46

五、模式应用

外观模式适用于复杂的系统,可以用于系统解耦。下面简单列举一下外观模式的一些应用场景

  • JavaEE框架里的Session就是用了外观模式

  • 学JSP的JDBC数据库操作也是经常用外观模式的

文章来源: smilenicky.blog.csdn.net,作者:smileNicky,版权归原作者所有,如需转载,请联系作者。

原文链接:smilenicky.blog.csdn.net/article/details/87903096

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。