设计模式(七)组合模式 桥梁模式 外观模式

组合模式

将对象组合成树形结构以表示“部分—整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。

组合模式提供以下3个角色:
■ 抽象构件(Component)角色:该角色定义参加组合对象的共有方法和属性,规范一些默认的行为接口。
■ 叶子构件(Leaf)角色:该角色是叶子对象,其下没有其他的分支,定义出参加组合的原始对象的行为。
■ 树枝构件(Composite)角色:该角色代表参加组合的、其下有分支的树枝对象,它的作用是将树枝和叶子组合成一个树形结构,并定义出管理子对象的方法,如add()、remove()等。

组合模式的主要作用是,集合所有的个体,并提供个体的属性方法,以便统一遍历处理。

比如:

汽车——启动

宝马 奔驰 奥迪

汽车队——启动
宝马——启动 奔驰——启动 奥迪——启动

当我调用车队启动的时候,车队里面所有汽车都启动了。这样很方便管理。

桥梁模式

将抽象和实现解耦,使得两者可以独立地变化。

桥梁模式有以下4个角色。
■ 抽象化(Abstraction)角色:该角色抽象化的给出定义,并保存一个对实现化对象的引用。
■ 实现化(Implementor)角色:该角色给出实现化角色的接口,但不给出具体的实现。
■ 修正抽象化(RefinedAbstraction)角色:该角色扩展抽象化角色,它引用实现化角色并对抽象化角色进行修正。
■ 具体实现化(ConcreteImplementor)角色:该角色对实现化角色接口中的方法进行具体实现。

在这里插入图片描述
相对于普通的imple,桥梁模式在应用端也实现了实例化。相当于多个应用同时在使用一个公共的抽象接口。
另一个示例:
在这里插入图片描述

外观模式

也叫门面模式。

要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。外观模式提供一个高层次的接口,使得子系统更易使用。

在这里插入图片描述
相当于一个管理员,提供统一的访问接口。就像一个大门进入之后,选择不同的房间一类似。当然还可以通过这个管理员来添加代理方面的流程。

在这里插入图片描述
另一个类图示例:
在这里插入图片描述