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 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

让程序飞

您的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值