美文网首页程序员设计模式首页推荐
设计模式之外观模式(结构型)

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

作者: smileNicky | 来源:发表于2019-02-24 15:14 被阅读13次

[TOC]

一、模式定义

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

在这里插入图片描述

二、模式角色

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

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

三、模式简单分析

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

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

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

在这里插入图片描述

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

四、简单例子实践

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数据库操作也是经常用外观模式的

相关文章

  • 结构型模式:外观模式

    文章首发:结构型模式:外观模式 七大结构型模式之五:外观模式。 简介 姓名 :外观模式 英文名 :Facade P...

  • Android设计模式——外观模式(七大结构型)

    1.外观模式介绍 外观模式(Facade Pattern),是七大结构型设计模式之一。 外观模式运...

  • Java日记之设计模式总结(结构型)

    前言 推荐看这篇文章之前先了解Java日记之设计模式初探。 结构型设计模式总共有7种 1.外观模式2.装饰者模式3...

  • Android设计模式之(21)----外观模式

    外观模式 外观模式属于结构型设计模式. 简单来说外观模式就是一个比较牛逼的封装理解而已.将一系列的操作,功能封装在...

  • S13. 外观模式

    外观模式 外观模式又叫门面模式,是一种结构型设计模式, 能为程序库、 框架或其他复杂类提供一个简单的接口。 外观模...

  • 结构型设计模式 - 外观模式

    为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用(子系统往往因为不断演...

  • 结构型设计模式-外观模式

    定义 外观模式(Facade),为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更...

  • 结构型设计模式.外观模式

    <在于降低系统的复杂程度> 概念理解 定义:又叫门面模式,隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统...

  • 结构型设计模式 — 外观模式

    笨蛋自以为聪明,聪明人才知道自己是笨蛋。 — 莎士比亚 写在前面 外观模式也可以称为门面模式,在我们开发Andro...

  • 【设计模式】结构型设计模式汇总

    结构型设计模式汇总 结构型设计模式名称 结构型设计模式主要包括 7 大类: 代理模式 桥接模式 装饰器模式 适配器...

网友评论

    本文标题:设计模式之外观模式(结构型)

    本文链接:https://www.haomeiwen.com/subject/njfbyqtx.html