设计模式入门:外观模式

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

原文链接: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相关资料

阅读更多

没有更多推荐了,返回首页