首先是感谢知识分享
1.场景
对不类型的不同品牌的手机,进行操作(比如,开,关,打,电话等操作)
注解:首先是场景抽象能力,画出结构图, 然后出现出代码来。
![](https://i-blog.csdnimg.cn/blog_migrate/da3be7398dd97376bc31c38572991b79.png)
传统方式:从结构图中抽象出代码来,这边是体现,程序设计者的能力的地方,下面是传统的方式。
- 上面的类图,存在的问题
- 1.扩展问题,增加手机样式,需要增加每个品牌的样式。
- 2 单一职责问题,增加手机样式,同时需要增加所有品牌的手机。(更多的侧重维护成本)
2 .桥接模式概念
- 桥接模式主要是解决,多层继承的问题 父类,子类,子子类 多层继承问题,当父类添加一个功能时,子类,子子类,需要修改。
- 桥接模式 是将实现和抽象 分层来实现 ,使两个层次独立开来。
- 桥接模式是一种结构模式
3 .桥接模式结构图
类图如下:
![](https://i-blog.csdnimg.cn/blog_migrate/756525500c09d650c608371ea8da5c8e.png)
- 1.client 是入口类
- 2.抽象类(Abstraction) 维护了implementor 两者是聚合的关系,充当桥接者。
- 3.refinedAbstraction 是abstraction的子类
- 4.Implementor 行为实现类的接口(类中,使用的都是接口 implementtor 接口类 定义参数)
- 5.ConcreteImplementA 和ConcreteImplementsB 是具体的行为类。
- uml 类图中,抽象类 abstraction 和接口 implementor 是 聚合关系,调用和被调用的关系。
其实上图中图示表达不是很明确,下面是 手机实例类图:
- 注意到,phone 就是 abstration ,而 Brand 是implementor 接口类,整个过程中,brand 作为参数传递(即桥接者来执行)
![](https://i-blog.csdnimg.cn/blog_migrate/ee0a9627d1b8d426b92df492fb217400.png)
4. 桥接模式代码
后续补充