外观是一种结构型设计模式, 能为复杂系统、 程序库或框架提供一个简单 (但有限) 的接口。
尽管外观模式降低了程序的整体复杂度, 但它同时也有助于将不需要的依赖移动到同一个位置。
复杂度:
流行度:
使用示例: 使用 Java 开发的程序中经常会使用外观模式。 它在与复杂程序库和 API 协作时特别有用。
下面是一些核心 Java 程序库中的外观示例:
识别方法: 外观可以通过使用简单接口, 但将绝大部分工作委派给其他类的类来识别。 通常情况下, 外观管理着其所使用的对象的完整生命周期。
复杂视频转换库的简单接口
在本例中, 外观简化了复杂视频转换框架所进行的沟通工作。
外观提供了仅包含一个方法的类, 可用于处理对框架中所需类的配置与以正确格式获取结果的复杂工作。
some_complex_media_library: 复杂视频转换程序库
some_complex_media_library/VideoFile.java
some_complex_media_library/Codec.java
some_complex_media_library/MPEG4CompressionCodec.java
some_complex_media_library/OggCompressionCodec.java
some_complex_media_library/CodecFactory.java
some_complex_media_library/BitrateReader.java
some_complex_media_library/AudioMixer.java
facade
facade/VideoConversionFacade.java: 外观提供了进行视频转换的简单接口
Demo.java: 客户端代码
OutputDemo.txt: 执行结果