持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第30天,点击查看活动详情
本文系作者 不太自律的程序猿原创,转载请私信并在文章开头附带作者和原文地址链接。
门面模式
门面模式,是指提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使得子系统更容易使用。
使用场景
1. 当您需要使用复杂子系统的有限但直接的接口时,请使用Facade模式。
2. 当您想要将子系统组织成层时,请使用Facade。
代码演示
public class FacadeTest {
public static void main(String[] args) {
}
}
class Client1 {
Facade facade=new Facade();
public void doSomething1() {
facade.doSomethingFacade();
}
}
class Client2 {
Facade facade=new Facade();
public void doSomething2() {
facade.doSomethingFacade();
}
}
class Facade {
SubSystem1 subSystem1=new SubSystem1();
SubSystem2 subSystem2=new SubSystem2();
SubSystem3 subSystem3=new SubSystem3();
public void doSomethingFacade() {
subSystem1.method1();
subSystem2.method2();
subSystem3.method3();
}
}
class SubSystem1 {
public void method1() {
System.out.println( " SubSystem1.method1 executed. " );
}
}
class SubSystem2 {
public void method2() {
System.out.println( " SubSystem2.method2 executed. " );
}
}
class SubSystem3 {
public void method3() {
System.out.println( " SubSystem3.method3 executed. " );
}
}
优缺点
优点
减少系统的相互依赖,门面模式可以让场景类只需要依赖门面对象,而与子系统无关。因此可以降低系统耦合。
提高灵活性,以来减少了,不管子系统内部如何变化,只要不修改门面对象的对外接口就行,提高了灵活性。
提高安全性,外部只能通过门面访问子系统的功能,门面没有开放的就不能访问,提高了子系统的安全性。
缺点
门面模式最大的缺点是不符合开闭原则。系统投产后,一旦发现错误,九比西药修改门面角色的代码,风险比较大。
JDK源码中的应用:
org.apache.catalina.connector.RequestFacade
感谢诸君的观看,文中如有纰漏,欢迎在评论区来交流。如果这篇文章帮助到了你,欢迎点赞👍关注。