基本要点
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();
}
}
运行结果如下

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

被折叠的 条评论
为什么被折叠?



