设计模式--外观模式

Java工程源码

类图

这里写图片描述


定义
要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供
一个高层次的接口,使得子系统更易于使用


优点
- 减少系统的相互依赖。所有的依赖都是对门面对象的依赖,与子系统无关。
- 提高了灵活性。不管子系统内部如何变化,只要不影响门面对象,任你自由活动

缺点
- 不符合开闭原则:对修改关闭,对扩展开放


使用场景
- 为一个复杂的模块或子系统提供一个供外界访问的接口
- 子系统相对独立——外界对子系统的访问只是黑箱操作即可
- 预防低水平人员带来的风险扩散


子系统A

public class ClassA {
    public void doSomethingA() {
        // 业务逻辑
        System.out.println("ClassA->doSomethingA()");
    }
}

子系统B

public class ClassB {
    public void doSomethingB() {
        // 业务逻辑
        System.out.println("ClassB->doSomethingB()");
    }
}

子系统C

public class ClassC {
    public void doSomethingC() {
        // 业务逻辑
        System.out.println("ClassC->doSomethingC()");
    }
}

外观对象

public class Facade {
    // 被委托的对象
    private ClassA a = new ClassA();
    private ClassB b = new ClassB();
    private ClassC c = new ClassC();

    // 提供给外部访问的方法
    public void methodA() {
        this.a.doSomethingA();
    }

    public void methodB() {
        this.b.doSomethingB();
    }

    public void methodC() {
        this.c.doSomethingC();
    }
}

场景类

public class Client {
    public static void main(String[] args) {
        // 新建外观类
        Facade facade = new Facade();
        // 执行外观类方法,实际执行子系统的方法
        facade.methodA();
        facade.methodB();
        facade.methodC();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值