概述
在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就要使用桥接模式。
应用场景
现在有咖啡,按大小分可以分为中杯和大杯,按类型可以分为拿铁和摩卡,所以现在总共有四中咖啡,中杯拿铁,大杯拿铁,中杯摩卡,大杯摩卡,按照传统的做法会这样设计:
这样设计似乎也不错,但是如果要新增加一种类型的咖啡例如爱尔兰咖啡,只需要在两个维度上都增加一个子类,设计如下:
优点:符合开闭原则
缺点:
- 违背了单一原则