外观模式:
迪米特法则(最少知识法则):一个软件实体应当尽可能少的与其他实体发生相互作用
![](https://i-blog.csdnimg.cn/blog_migrate/3ada00abc6c9469aafda4fe508b0f260.png)
外观模式核心:
为子系统提供一个统一入口。封装子系统的复杂性,便于客户端调用
外观模式示例:
package cn.fllday.facade;
public class 工商局 {
public void gongshang() {
System.out.println("通过工商局");
}
}
package cn.fllday.facade;
public class 税务局 {
public void shuiwu() {
// TODO Auto-generated method stub
System.out.println("通过税务局");
}
}
package cn.fllday.facade;
public class 银行 {
public void yinhang() {
System.out.println("银行");
}
}
package cn.fllday.facade;
public class 质监局 {
public void zhijian() {
System.out.println("通过质检局");
}
}
不通过外观模式:
package cn.fllday.facade;
/**
* 未使用外观模式
* @author gssznb
*
*/
public class Client {
public static void main(String[] args) {
工商局 a = new 工商局();
a.gongshang();
税务局 b = new 税务局();
b.shuiwu();
银行 c = new 银行();
c.yinhang();
质监局 d = new 质监局();
d.zhijian();
}
}
如果使用外观模式。需要创建一个Facade类
package cn.fllday.facade;
public class RegisterFacade {
public void register() {
工商局 a = new 工商局();
a.gongshang();
税务局 b = new 税务局();
b.shuiwu();
银行 c = new 银行();
c.yinhang();
质监局 d = new 质监局();
d.zhijian();
}
}
创建Client 调用:
package cn.fllday.facade;
/**
* 使用外观模式
* @author gssznb
*
*/
public class Client02 {
public static void main(String[] args) {
new RegisterFacade().register();
}
}
比如说你创建需要注册一个公司。这样你就需要去工商局,税务局,银行啊等等等。。。 但是使用了外观模式,就是比如你找了一家公司。他把所有的事情都代替你去完成。