【结构型设计模式】外观模式

使用外观模式简化系统交互
本文介绍了迪米特法则(最少知识原则),并通过一个实例展示了如何运用该原则和外观模式来封装子系统的复杂性。在例子中,通过创建一个统一的接口Register,客户端可以直接调用该接口完成公司注册,避免了直接与银行和工商局等多个接口交互,提高了代码的简洁性和可维护性。

基本要点

1、迪米特法则(最少知识原则)
一个类对于其他类知道的越少越好,就是说一个对象应当对其他对象有尽可能少的了解
就像去茶馆喝茶,只需要和茶水服务员打交道即可,不需要和茶具、开水还有茶叶打交道

2、核心
为子系统提供统一的入口,封装子系统的复杂性,便于客户端调用,例如自己封装的工具类

代码样例

假设我们现在要去开一家公司,我们需要去银行取钱,还要去工商局进行注册登记
如果我们有一个接口封装好这些方法,我们就可以直接调用这一个接口即可

// 银行取钱接口
public interface Bank {
    void withdrawMoney();
}

class MyBank implements  Bank {
    @Override
    public void withdrawMoney() {
        System.out.println("从银行取钱");
    }
}

// 工商局注册登记接口
public interface Government {
    void registeredCompany();
}

class relevantDepartment implements Government {

    @Override
    public void registeredCompany() {
        System.out.println("进行注册登记");
    }
}

// 创建一个封装好的类
public class Register {
    public void registerCompany() {
        Bank bank = new MyBank();
        bank.withdrawMoney();
        Government government = new relevantDepartment();
        government.registeredCompany();
    }
}

public class Client {
    public static void main(String[] args) {
        // 假如我们不使用外观模式,那我们开设公司需要一一去和那些接口打交道
        System.out.println("不使用外观模式-----------------");
        Bank bank = new MyBank();
        bank.withdrawMoney();
        Government government = new relevantDepartment();
        government.registeredCompany();

        System.out.println("使用外观模式-----------------");
        // 如果使用外观模式,那只需要和一个接口打交道即可
        Register register = new Register();
        register.registerCompany();
    }
}

运行结果如下
在这里插入图片描述

如有错误,欢迎指正

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值