设计模式的征途—8.桥接(Bridge)模式
在现实生活中,我们常常会用到两种或多种类型的笔,比如毛笔和蜡笔。假设我们需要大、中、小三种类型的画笔来绘制12中不同的颜色,如果我们使用蜡笔,需要准备3*12=36支。但如果使用毛笔的话,只需要提供3种型号的毛笔,外加12个颜料盒即可,涉及的对象个数仅为3+12=15,远远小于36却能实现与36支蜡笔同样的功能。如果需要新增一种画笔,并且同样需要12种颜色,那么蜡笔需要增加12支,而毛笔却只需要新增1支。通过分析,在蜡笔中,颜色和型号两个不同的变化维度耦合在一起,无论对其中任何一个维度进行扩展,都势必会影响另外一个维度。但在毛笔中,颜色和型号实现了分离,增加新的颜色或者型号都对另外一方没有任何影响。在软件系统中,有些类型由于自身的逻辑,它具有两个或多个维度的变化。为了解决这种多维度变化,又不引入复杂度,这就要使用今天介绍的Bridge桥接模式。 桥接模式(Bridge) 学习难度:★★★☆☆ 使用频率:★★★☆☆ 一、跨平台的图像浏览系统 1.1 需求介绍 M公司开发部想要开发一个跨平台的图像浏览系统,要求该系统能够显示JPG、BMP、GIF、PNG等多种格式的文件,并且能够在Windows、Linux以及Unix等多个操作系统上运行。该系统首先将各种格式的文件解析为像素矩阵(Matrix),然后将像素矩阵显示在屏幕上,在不同的操作系统中可以调用不同的绘制函数来绘制像素矩阵