专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

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

目录

  • 一、模式定义
  • 二、模式角色
  • 三、模式简单分析
  • 四、简单例子实践
  • 五、模式应用

一、模式定义

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

71_1.png

二、模式角色

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

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

三、模式简单分析

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

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

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

71_2.png

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

四、简单例子实践

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

五、模式应用

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

  • JavaEE框架里的Session就是用了外观模式
  • 学JSP的JDBC数据库操作也是经常用外观模式的

文章永久链接:https://tech.souyunku.com/25417

未经允许不得转载:搜云库技术团队 » Java 设计模式之外观模式(结构型)

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们