GoF设计模式 - 外观模式

Posted 让程序飞

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GoF设计模式 - 外观模式相关的知识,希望对你有一定的参考价值。

前言

外观模式(Facade),提供一个高层次的接口,隐藏系统的复杂性,使得子系统更易于使用。

 

 

具体实现

子系统类 :

public class SubSystemA 

    public void methodA()
        System.out.println("执行子系统方法A");
    

public class SubSystemB 

    public void methodB()
        System.out.println("执行子系统方法B");
    
public class SubSystemC 

    public void methodC()
        System.out.println("执行子系统方法C");
    

外观类

public class Facade 
    private final SubSystemA subSystemA;
    private final SubSystemB subSystemB;
    private final SubSystemC subSystemC;

    public Facade()
        subSystemA = new SubSystemA();
        subSystemB = new SubSystemB();
        subSystemC = new SubSystemC();
    

    public void method()
        subSystemA.methodA();
        subSystemB.methodB();
        subSystemC.methodC();
    
@SpringBootTest
class FacadeDemoApplicationTests 

	@Test
	void contextLoads() 
		Facade facade = new Facade();
		facade.method();
	

 

优缺点

优点

  • 降低了客户端与子系统的耦合关系。
  • 让子系统更加易用,客户端不再需要了解子系统内部的实现。
  • 提高了安全性,例如有些方法是对系统外的,有些方法是系统内部使用的,把需要暴露给外部的功能集中到外观中,这样既方便客户端使用,也很好地隐藏了内部的细节。

缺点

  • 不符合“开闭原则”,新增子系统时需要修改外观类。

 

源码

https://download.csdn.net/download/javanbme/63206958 

以上是关于GoF设计模式 - 外观模式的主要内容,如果未能解决你的问题,请参考以下文章

GOF设计模式(10)外观模式

GoF设计模式 - 外观模式

GoF设计模式 - 外观模式

GoF设计模式:Facade Pattern 外观模式

GOF之外观模式

设计模式GOF23大纲