设计模式系列:搞懂门面模式,对外统一出口
发布于 2021-04-08 10:24
//子模块A
public class SubModuleA {
public void doA(){
System.out.println("子模块A的被调用!");
}
}
//子模块B
public class SubModuleB {
public void doB(){
System.out.println("子模块B的被调用!");
}
}
//子模块C
public class SubModuleC {
public void doC(){
System.out.println("子模块C的被调用!");
}
}
//门面类
public class Facade {
private SubModuleA subModuleA = new SubModuleA();
private SubModuleB subModuleB = new SubModuleB();
private SubModuleC subModuleC = new SubModuleC();
public void doing() {
subModuleA.doA();
subModuleB.doB();
subModuleC.doC();
}
}
//测试类
public class FacadeTest {
public static void main(String[] args) {
Facade facade = new Facade();
facade.doing();
}
}
门面模式的结构图:
门面模式的优点:
1、简化调用过程,降低了子系统与客户端之间的耦合度。
2、减少系统间的依赖关系,松散耦合。
3、遵循迪米特法则(最小知道原则)。
门面模式的缺点:
1、增加子系统或扩展子系统功能时容易带来未知风险。
2、增加新的子系统可能需要修改门面类或客户端的代码,违背“开闭原则”。
3、门面类功能过多时可能违反单一职责。
门面模式的使用场景:
1、对分层结构系统构建时,使用门面模式定义子系统中每层的入口点可以简化子系统之间的依赖关系。
2、当一个复杂系统的子系统很多时,门面模式可以为系统设计一个简单的接口供客户端访问。
3、当客户端与多个子系统之间存在很大的联系时,门面模式可将它们分离,从而提高子系统的独立性和可移植性。
门面模式与代理模式的区别:门面模式重在对子系统的封装,代理模式重在对被代理类的增强。
本文来自网络或网友投稿,如有侵犯您的权益,请发邮件至:aisoutu@outlook.com 我们将第一时间删除。
相关素材