设计模式——10.外观模式 facade

迪米特法则(最少知识原则):
– 一个软件实体应当尽可能少的与其他实体发生相互作用。
在这里插入图片描述
外观模式核心:
– 为子系统提供统一的入口。封装子系统的复杂性,便于客户端调用。
在这里插入图片描述
基本案例
– 注册公司流程(不使用外观模式)

package com.bjsxt.facade;

public interface 工商局 {
    void checkName();
}
class 海淀区工商局 implements 工商局{

    @Override
    public void checkName() {
        System.out.println("去海淀区工商局检查名字,不能与其他公司名称相似或相同!");
    }
}
package com.bjsxt.facade;

public interface 银行 {
    void openAccount();
}
class 中国工商银行 implements 银行{
    @Override
    public void openAccount() {
        System.out.println("去中国工商银行给公司开一个账户!");
    }
}

package com.bjsxt.facade;

public interface 税务局 {
    void taxCertificate();
}
class 海淀区税务局 implements 税务局{
    @Override
    public void taxCertificate() {
        System.out.println("去海淀区税务局税务确认!");
    }
}

package com.bjsxt.facade;

public class Client1 {
    public static void main(String[] args) {
        System.out.println("----自己跑,不用外观模式");
        new 海淀区工商局().checkName();
        new 中国工商银行().openAccount();
        new 海淀区税务局().taxCertificate();
    }
}

uml图:
在这里插入图片描述

运行结果:
在这里插入图片描述
– 注册公司流程(使用外观模式)

package com.bjsxt.facade;

public class Facade {
    void register(){
        new 海淀区工商局().checkName();
        new 中国工商银行().openAccount();
        new 海淀区税务局().taxCertificate();
    }
}
package com.bjsxt.facade;


public class Client2 {
    public static void main(String[] args) {
        System.out.println("----用外观模式,掏出一些钱,找代理完成公司注册");
        Facade facade = new Facade();
        facade.register();
    }
}

uml图:
在这里插入图片描述
运行结果:
在这里插入图片描述
开发中常见的场景
– 频率很高。哪里都会遇到。各种技术和框架中,都 有外观模式的使用。
如:
• JDBC封装后的,commons提供的DBUtils类, Hibernate提供的工具类、Spring JDBC工具类等

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值