博客
关于我
外观模式
阅读量:810 次
发布时间:2019-03-24

本文共 1527 字,大约阅读时间需要 5 分钟。

外观模式解析

外观模式(Facade Pattern),又称门面模式,是软件设计中一种常用的设计模式。它通过为多个复杂子系统提供一个统一的接口,使外部应用无需关心内部子系统的具体实现细节,从而降低了系统的复杂性,提高了可维护性和灵活性。

模式本质

外观模式的核心思想是把零散的功能模块抽象成一个整体。通过引入中介类,将分散的功能组合成一个统一的服务接口,简化了外部对系统的访问需求。这种设计理念强调功能的整合与标准化,避免了过度耦合和功能孤岛的产生。

典型场景

可以想象,在房建领域,装修公司充当外观角色,整合了墙工、水电是否和贴砖等分散功能。通过统一的接口,客户只需调用一个服务,房屋装修工作立即完成。这正是外观模式的实际应用场景:它将零散、分散的功能模块,复合成一个易于使用的整体服务。

以代码为例

让我们用一个简单的例子来理解外观模式。假设有三个子系统:刷墙、装修公司、地砖铺设。每个子系统都有自己的处理逻辑:

  • 刷墙类:负责给墙刷漆
  • 装修公司类:协调其他子系统完成整体装修工作
  • 地砖铺设类:负责地板砖的安装

装修公司类将各子系统通过统一接口暴露给外部,外部只需调用一次装修任务即可完成整个装修流程。这解决了内件复杂性问题,使外部无需关心具体实现细节。

实现示例

class Facade {    private Wall washer;    private Electrician electrician;    private Carpenter carpenter;    Facade() {        this.washer = new Wall();        this.electrician = new Electrician();        this.carpenter = new Carpenter();    }    void decorate() {        washer.washWall();        electrician.installElectrics();        carpenter.InstallCarpentry();    }}// 子系统class Wall {    void washWall() { System.out.println("刷墙..."); }}class Electrician {    void installElectrics() { System.out.println("安装电路..."); }}class Carpenter {    void InstallCarpentry() { System.out.println("安装木工..."); }}// 测试类class Test {    public static void main(String[] args) {        Facade facade = new Facade();        facade.decorate();    }}// 输出:// 刷墙... installing电路...安装木工...

� Chí angel şeyler

通过该设计模式,用户可以避免了直接处理复杂的内部系统逻辑,降低了耦合度,提高了系统的可扩展性和维护性。此外,外观模式还为系统集成提供了良好的灵活性,特别是在搭建复杂应用时,能够更轻松地整合各种分布式服务。

总的来说,外观模式的适用场景是当系统内部存在多个既不相互关联也不相互兼容的子系统时,可以通过一个统一接口将这些子系统整合在一起,从而实现系统功能的透明化和批量化操作,解决了功能分散带来的问题。

转载地址:http://yyhkk.baihongyu.com/

你可能感兴趣的文章
Oracle在线重定义
查看>>
oracle基础 管理索引
查看>>
ORACLE多表关联UPDATE 语句
查看>>
Oracle多表查询与数据更新
查看>>
oracle如何修改单个用户密码永不过期
查看>>
oracle字符集
查看>>
oracle存储参数(storage子句)含义及设置技巧
查看>>
Oracle学习
查看>>
ORACLE客户端连接
查看>>
oracle常用SQL——创建用户、表空间、授权(12C)
查看>>
Oracle数据库异常--- oracle_10g_登录em后,提示java.lang.Exception_Exception_in_sending_Request__null或Connection
查看>>
oracle数据库异常---SP2-1503: 无法初始化 Oracle 调用界面 SP2-1503: 无法初始化 Oracle 问题的解决办法
查看>>
oracle数据库笔记---oracleweb视图使用流程,及plsql安装
查看>>
Transformer 架构解释
查看>>
Oracle数据库表空间 数据文件 用户 以及表创建的SQL代码
查看>>
Oracle数据库验证IMP导入元数据是否会覆盖历史表数据
查看>>
Oracle未开启审计情况下追踪表变更记录
查看>>
Oracle查看数据库会话连接
查看>>
Oracle查询前几条数据的方法
查看>>
oracle树形查询 start with connect by
查看>>