博客
关于我
外观模式
阅读量: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/

你可能感兴趣的文章
oc57--Category 分类
查看>>
occi库在oracle官网的下载针对vs2008
查看>>
OceanBase 安装使用详细说明
查看>>
OceanBase详解及如何通过MySQL的lib库进行连接
查看>>
ocp最新题库之052新题带答案整理-36题
查看>>
OCP题库升级,新版的052考试题及答案整理-18
查看>>
OCR:文字识别(最详细教程)
查看>>
OCR使用总结
查看>>
Octotree Chrome插件离线安装
查看>>
OC中关于给NSString 赋 nil和@""的区别
查看>>
OC字符串方法汇总
查看>>
oday!POC管理和漏洞扫描小工具
查看>>
ofbiz 定义
查看>>
Ofelia:在Pd中融合openFrameworks与Lua的创意编程利器
查看>>
Office online server 部署
查看>>
office 中墨迹书写工具_自动生成英文书法稿纸的几个网址,及Briem 的cursive italic书写教程...
查看>>
Office2010每次启动都要配置的解决办法
查看>>
Office2016 打开excel出现丢失appvisvsubsystems32.dll
查看>>
Office365 PowerShell打开邮箱审计功能
查看>>
OfficeWeb365 Readfile 任意文件读取漏洞复现
查看>>