设计模式入门:外观模式

原创 2018年04月15日 14:31:28

原文链接:http://te-amo.site/user/article/info/ARTICLE20180415023014903
文章中部分定义和解释性文字,都是引用百度百科,主要的代码及场景应用为本人原创

外观模式,为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。

场景:系统有个清理的任务,需要清理三个地方的缓存:本地缓存,数据库缓存,FTP服务器缓存。如果让客户端直接调用三个清理系统,耦合性太高,不便于以后扩展,所以可以使用外观模式。

结果

  • Facade:外观类为子系统提供一个共同的对外接口(Clean)
  • Clients:客户对象通过一个外观接口读写子系统中各接口的数据资源。(Main)

设计

这里写图片描述

实现

代码地址:https://github.com/telundusiji/designpattern

数据库清理

@Slf4j
public class DBClean {
    public void clean(){
        log.info("数据库缓存清理成功");
    }
}

FTP服务器清理

@Slf4j
public class FtpClean {
    public void clean(){
        log.info("Ftp缓存清理成功");
    }
}

本地清理

@Slf4j
public class LocalClean {
    public void clean(){
        log.info("本地缓存清理成功");
    }
}

清理外观类

public class Clean {
    private DBClean dbClean;
    private FtpClean ftpClean;
    private LocalClean localClean;

    public Clean(){
        dbClean = new DBClean();
        ftpClean = new FtpClean();
        localClean = new LocalClean();
    }

    public void clean(){
        dbClean.clean();
        localClean.clean();
        ftpClean.clean();
    }
}

优点

  • 实现了子系统与客户端之间的松耦合关系。
  • 客户端屏蔽了子系统组件,减少了客户端所需处理的对象数目,并使得子系统使用起来更加容易。

经典应用

SLF4J(Simple Logging Facade for Java)就是一个外观模式的实际应用。
想了解更多可以去查询SLF4J相关资料

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/telundusiji/article/details/79949109

IBM eServer z900 的64位 Linux 开放源码(TERRYWANG加注:含下载链接)

IBM 程序员,昨天(12月21日)做了一件破天荒的事情, 他们把64位操作系统的源代码向开放源码社区公开了。 当然这些代码是否可以和期待中的2.4 Linux 内核精密无 缝地的集成是对开放源码社区...
  • terrywang
  • terrywang
  • 2000-12-24 11:36:00
  • 538

最常用的设计模式---外观模式(C++实现)

外观模式:提供了一个统一的接口,用来访问子系统的一群接口。外观定义了一个高层接口,让子系统更容易使用。目地:让接口变得简单,是为了简化子系统的接口。...
  • lh844386434
  • lh844386434
  • 2014-01-09 17:25:22
  • 1791

【C#设计模式-外观模式】

一.概述:外观模式,为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。 二.结构:Facade这个外观类为子系统提供一个共同的对外接口,Clients客户对...
  • heyangyi_19940703
  • heyangyi_19940703
  • 2016-05-03 12:45:10
  • 1516

《Java设计模式》之外观模式

外观模式(Facade pattern)涉及到子系统的一些类。所谓子系统,是为提供一系列相关的特征(功能)而紧密关联的一组类。例如,一个Account类、Address类和CreditCard类相互关...
  • u011225629
  • u011225629
  • 2015-08-16 08:00:49
  • 1606

Java 设计模式——外观模式

今天要说的外观模式是一个相对简单的设计模式,而且在日常的开发中,可能你也会时常使用它,只是你可能并未想过这是一个设计模式。本文会从一些实例着手,来对本文要说明的外观模式进行尽可能全面的讲解。希望于你有...
  • u013761665
  • u013761665
  • 2016-06-06 00:11:17
  • 3578

C#设计模式——外观模式

外观模式: 外观模式是很常用的模式,在软件开发过程中,客户端程序经常会与复杂系统的内部子系统进行耦合,从而导致客户端程序随着子系统的变化而变化,然而为了将复杂系统的内部子系统与客户端之间的依赖解耦,从...
  • hongwei15732623364
  • hongwei15732623364
  • 2016-02-02 19:44:34
  • 498

Android设计模式(二十二)-外观模式

外观模式猛一听有点蒙逼,但是在开发中我们应该都用过,只是没这个概念罢了。比如在开发时通常会把图片加载框架和网络框架进行封装,封装到最后只暴露出来一个最上级的类供外部调用,外部调用这一个类提供的方法,然...
  • qq_25806863
  • qq_25806863
  • 2017-04-11 00:01:31
  • 894

java/android 设计模式学习笔记(14)---外观模式

这篇博客来介绍外观模式(Facade Pattern),外观模式也称为门面模式,它在开发过程中运用频率非常高,尤其是在现阶段各种第三方 SDK 基本很大概率都会使用外观模式。通过一个外观类使得整个系统...
  • zhao_zepeng
  • zhao_zepeng
  • 2016-07-17 18:14:44
  • 3785

戏说设计模式(一)外观模式

0. 前言我发明了一个可以做菜的机器,它有一个菜单,可以给你做菜单里菜肴,如你选择菜单里的西红柿炒蛋,它就会给你来一盘西红柿炒蛋。你以为我在讲真?开玩喜,我只是想用这个例子讲一下外观模式(Facade...
  • TimHeath
  • TimHeath
  • 2016-11-25 16:32:46
  • 634

JAVA设计模之外观模式

Facade(外观)模式为子系统中的各类(或结构与方法)提供一个简明一致的界面,隐藏子系统的复杂性,使子系统更加容易使用。 使用facade以前假设有五个类:propressor, compiler,...
  • mishifangxiangdefeng
  • mishifangxiangdefeng
  • 2016-10-09 09:16:53
  • 354
收藏助手
不良信息举报
您举报文章:设计模式入门:外观模式
举报原因:
原因补充:

(最多只允许输入30个字)