外观模式
外观模式我们在日常工作中应该都有用到。比如现在有三个基本的底层接口ABC分别对应不同的功能,
然后实现甲逻辑需要先调用A在调用B在调用C
实现已逻辑需要先调用C在调用B在调用A
我们在工作中很多情况是,基础接口ABC是由一个部门维护,甲乙具体需求逻辑是另一个组的小伙伴实现,如果基础接口一旦有改动,就得通知所的组都改,这样就很麻烦增加了很多沟通和修改工作量
这时候我们就可以用到外观模式,我理解的外观模式就是给接口包一层中间层,把基础接口的组合打包成一个个套餐提供出去,这样,接口发生改变,只要我们接口提供方改动就行了。
代码实现:
public class FacadePattern
{
public static void main(String[] args)
{
Facade f=new Facade();
f.method();
}
}
//外观接口
class Facade
{
private SubSystem01 obj1=new SubSystem01();
private SubSystem02 obj2=new SubSystem02();
private SubSystem03 obj3=new SubSystem03();
public void method()
{
obj1.method1();
obj2.method2();
obj3.method3();
}
}
//子系统接口A
class SubSystem01
{
public void method1()
{
System.out.println("接口A的method1()被调用!");
}
}
//子系统接口B
class SubSystem02
{
public void method2()
{
System.out.println("接口B的method2()被调用!");
}
}
//子系统接口C
class SubSystem03
{
public void method3()
{
System.out.println("接口C的method3()被调用!");
}
}
外观模式的使用场景
通常在以下情况下可以考虑使用外观模式。
- 对分层结构系统构建时,使用外观模式定义子系统中每层的入口点可以简化子系统之间的依赖关系。
- 当一个复杂系统的子系统很多时,外观模式可以为系统设计一个简单的接口供外界访问。
- 当客户端与多个子系统之间存在很大的联系时,引入外观模式可将它们分离,从而提高子系统的独立性和可移植性。