概念
类的继承是类本身的垂直维度变化。如果需要水平维度上的变化扩展。继承是不好实现的。这时候我们可以引入桥接方式。桥接模式的做法是把变化部分抽象
出来,使变化部分与主类分离开来,从而将多个维度的变化彻底分离。最后,提供一个管理类来组合不同维度上的变化,通过这种组合来满足业务的需要。
实现
Fruit:
1 | package com.littlehui.design.bridge; |
AbstractFruit:
1 | package com.littlehui.design.bridge; |
Apple:
1 | package com.littlehui.design.bridge; |
WaterMelon:
1 | package com.littlehui.design.bridge; |
EatHandler:
1 | package com.littlehui.design.bridge; |
PeelHandler :
1 | package com.littlehui.design.bridge; |
EatHandlerDivid:
1 | package com.littlehui.design.bridge; |
1 | package com.littlehui.design.bridge; |
如上代码解释:
- 抽象部分 1:吃水果接口抽象,2.吃水果前处理抽象。
- 具体实现部分 : apple里的enjoy
这里就分离了水果关于吃水果和水果处理的部分。Apple里的enjoy是具体的实现,可以eat,可以做其他操作。我们可以切换 水果处理 Handle来改变 Apple
enjoy具体时动作。
场景
略
总结
桥接的重点是 将实现解耦,抽象和实现独立开,不影响对方。
桥接一般用于跨多个平台的图形和窗口系统上。当需要不同的方式改变借口和实现时,可以用桥接。