结构型强调的是1+1〉2,即充分利用现有的类或者对象,通过合理的组装,达到意想不到(其实是迫切想达到)的效果。
1.adapter.这个基本上现有的系统中都或多或少的会用到。因为,一部分的结构是根据自己的系统制定的,另一方面利用平台提供的类库,MFC .net等等。想把这两个结合起来使用,必然要使用适配器模式拉。这里面主要是区分类适配和对象适配。即继承还是组合拉,都差不多。好比现有一个类可以计算两个数值的加减。那么有一个计算方差的类就可以利用这个类进行方差计算拉。
2。bridge模式。这个模式业界最大的用处是利用它进行平台无关化设计。我们一般在讲设计的时候,一定会有抽象和实现的概念出来。抽象就是为了不同的实现,灵活性就是这个拉。但是每个实现都离不开平台特性的。最明显的就是画图或者网络同性。绝对无法通用的。这样一来,bridge模式,进行了二次抽象,假设上层接口不变,实现的方式或者说接口抽象出来一层,利用这层抽象去实现上层接口,这样一来不管哪个平台,只要实现了,则上层接口是不在乎的。其实,这里面蕴含的是OO设计中非常著名的“接口倒置”原则。以往讨论问题,会发现都是上层依赖下层,这个其实是很危险的,如果一个上层利用四个下层实现,那么这个上层受到四个地方修改而引修改的危险。不稳定性很高。
3。组合模式。强调的是动态管理容器。添加或者删除容器内的元素,而这些元素都具有相似的职责,否则不适用该模式。避免用户每次都要关心每个细小的元素,尤其是可以体现父子关系的时候,这个模式其实是做了一层封装。
4。装饰模式。这个模式很重要,充分体现了模式的动态性和灵活性。其实,对于一个既有系统而言,可以动态的添加新的职责是一个多么令人欣慰的事情。好比一个做计算的类已经处理完了,我现在需要一个类可以把这个结果和过程记录下来。那么,我就需要继承这个类,然后利用现有的方法处理计算,在新增一个职责,把过程和结果写入某文件。