Aha!设计模式(61)-外观模式(1)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/craftsman1970/article/details/88954276

意图

为子系统定义一个高层次的接口,以提高易用性并降低耦合性。
 

动机

当我们向用户提供一个软件系统时,一般来讲接口越简单,它的使用就会越容易,和其他系统之间的耦合程度也会更低。

假设我们正在开发一个视频转换系统。一般来讲视频转换需要几个步骤:

1.打开转换源文件

2.选择合适的解码器

3.从源文件种读取视频信息

4.分离视频和音频

5.分别选择合适的视频和音频编码器

6.分别对视频和音频进行编码

7.合成视频和音频

8.输出到目标文件

这里的每一步,都需要在输出的容量,音质/画质,处理速度这些相互矛盾的要求中进行平衡,需要选择合适的功能模块并恰当地设定参数。这些决定都是相当的知识才能完成的。对于专业人士来说,这也许不算什么,但是对于一般用户来说,一方面没有那么多专业知识,另一方面也没有那么高的要求,他们要的只是一个足够好的结果,这种做法对他们来说太难了。

因此对于这样的复杂系统来说,除了提供详尽的,强大的接口来满足专业客户的要求之外,还要为一般客户提供一个高层次的,简单的接口。对于视频转换的例子,这个接口可能只要求客户提供输入文件和输出文件的类型以及用途(在电脑上,通过网络分享等)就可以进行视频格式转换了。

觉得本文有帮助?请分享给更多人。

阅读更多更新文章,请扫描下面二维码,关注微信公众号【面向对象思考】

猜你喜欢

转载自blog.csdn.net/craftsman1970/article/details/88954276