一、桥接模式
定义:将抽象化和实现化脱耦,使得二者可以可以独立的变化。
其中有三个关键字抽象化、实现化、脱耦。
- 抽象化:一组对象能够有相同的概念联系,那么我们可以使用一个类来描述,如果一些类具有相同的概念联系,那么我们可以使用一个抽象类来描述这就是抽象化,如果更复杂我们可以使用继承用父子来描述。
- 实现化:一个类的实例就是这个类的实现化,也是这个类的父类的实现化。
- 脱耦:强耦合在编译时就确定,弱耦合可以在运行时动态改变关联。在Java中继承是强关联,聚合是弱关联。
二、传统继承模式与桥接模式
当一个类存在两个维度的变化并且衍生出不同的类,比如车这个主体有引擎并且,车会有公交车、轿车、跑车等等、引擎有烧油、用电、用气的。
1.传统继承模式
当需要不同类型的汽车时继承方式会产生类似笛卡尔积数量的类。当要新增一种类型的车时,需要对引擎进行修改对维护和扩张都不利。
2.桥接模式
UML类图
此模式基本机构为两层抽象化角色(Car、Engine)和修正抽象化角色(Saloon、Bus、GasonlineEngine)。而Car和Engine存在组合的关系。
这个模式主要是理解概念,代码都很简单。