定义:

  • 是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体的细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。

    特点:

  • 降低了子系统与客户端之间的耦合度,使得子系统的变化不会影响调用它的客户类。(优点)

  • 对客户屏蔽了子系统组件,减少了客户处理的对象数目,并使得子系统使用起来更加容易。(优点)
  • 降低了大型软件系统中的编译依赖性,简化了系统在不同平台之间的移植过程。(优点)
  • 不能很好地限制客户使用子系统类。(缺点)

    通常适用场景:

  • 对分层结构系统构建时,使用外观模式定义子系统中每层的入口点可以简化子系统之间的依赖关系。

  • 当一个复杂系统的子系统很多时,外观模式可以为系统设计一个简单的接口供外界访问。
  • 当客户端与多个子系统之间存在很大的联系时,引入外观模式可将它们分离,从而提高子系统的独立性和可移植性。

    demo代码:

  • 几个实现类 ```java public interface Fruit { void make(); }

public class Peach implements Fruit { @Override public void make() { System.out.println(“peach”); } }

public class Pear implements Fruit { @Override public void make() { System.out.println(“pear”); } }

  1. - 外观类
  2. ```java
  3. //外观类
  4. public class FruitFacade {
  5. private Fruit peach;
  6. private Fruit pear;
  7. public FruitFacade(){
  8. this.peach=new Peach();
  9. this.pear=new Pear();
  10. }
  11. public void makePeach(){
  12. peach.make();
  13. }
  14. public void makePear(){
  15. pear.make();
  16. }
  17. }
  • 测试
    public static void main(String[] args) {
      FruitFacade fruitFacade = new FruitFacade();
      fruitFacade.makePeach();
      fruitFacade.makePear();
    }