设计模式之外观模式(七)终版

外观模式

简介

外观模式(Facade)外观模式为子系统中的一组接口提供一个一致的界面。
外观模式通过定义一个一致的接口,用来屏蔽内部子类系统细节,使调用端只需要跟这个接口发生调用,不关心子系统的内部细节操作。

工作原理

定义若干个子系统类,根据需求分别实现不同功能的方法,定义一个外观类聚合各个子系统,生成一个构造器进行初始化,最后生成完整的一系列功能方法,客户端直接调用生成好的方法即可。

使用场景

Mybatis源码中的Configuration去创建MetaObject对象使用了外观模式。

注意事项及细节

1.外观模式对外屏蔽了子系统的细节,所以外观模式降低了用户对子系统使用的复杂性。
2.通过合理的使用外观模式,可以更好的划分访问层级关系,系统需要分层设计时,可考虑外观模式。
3.外观模式对客户端与子系统的耦合关系,让子系统内部的模块更容易的扩展和维护。
4.在维护一个遗留的大型系统时,可能这个系统写的非常乱难以维护和扩展,这时候考虑开发一个外观模式的类,来提供遗留系统的比较简单清晰的接口,提高复用性。

结构图

在这里插入图片描述

练习实例
public class FacadePattern {
    public static void main(String[] args) {
        Facade f = new Facade();
        f.method();
    }
}
//外观角色
class Facade {
    private SubSystem01 obj1 = new SubSystem01();
    private SubSystem02 obj2 = new SubSystem02();
    private SubSystem03 obj3 = new SubSystem03();
    public void method() {
        obj1.method1();
        obj2.method2();
        obj3.method3();
    }
}
//子系统角色
class SubSystem01 {
    public void method1() {
        System.out.println("子系统01的method1()被调用!");
    }
}
//子系统角色
class SubSystem02 {
    public void method2() {
        System.out.println("子系统02的method2()被调用!");
    }
}
//子系统角色
class SubSystem03 {
    public void method3() {
        System.out.println("子系统03的method3()被调用!");
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值