设计模式入门:外观模式

个人公众号【爱做梦的锤子】,全网同id,个站 http://te-amo.site,欢迎关注,里面会分享更多有用知识,还有我的私密照片
文章中部分定义和解释性文字,都是引用百度百科,主要的代码及场景应用为本人原创

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

场景:系统有个清理的任务,需要清理三个地方的缓存:本地缓存,数据库缓存,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相关资料

个人公众号【爱做梦的锤子】,全网同id,个站 http://te-amo.site,欢迎关注,里面会分享更多有用知识,还有我的私密照片

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值