门面模式

105 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第30天,点击查看活动详情

本文系作者 不太自律的程序猿原创,转载请私信并在文章开头附带作者和原文地址链接。

门面模式

门面模式,是指提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使得子系统更容易使用。 image.png

使用场景

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. " );

    }

}


优缺点

优点

  1. 减少系统的相互依赖,门面模式可以让场景类只需要依赖门面对象,而与子系统无关。因此可以降低系统耦合。

  2. 提高灵活性,以来减少了,不管子系统内部如何变化,只要不修改门面对象的对外接口就行,提高了灵活性。

  3. 提高安全性,外部只能通过门面访问子系统的功能,门面没有开放的就不能访问,提高了子系统的安全性。

缺点

门面模式最大的缺点是不符合开闭原则。系统投产后,一旦发现错误,九比西药修改门面角色的代码,风险比较大。

JDK源码中的应用:

org.apache.catalina.connector.RequestFacade

感谢诸君的观看,文中如有纰漏,欢迎在评论区来交流。如果这篇文章帮助到了你,欢迎点赞👍关注。