手机操作问题

image.png

传统方案解决手机操作问题

传统方案解决手机操作问题分析

  1. 扩展性问题(类爆炸),如果我们再增加手机的样式(旋转式),就需要增加各个品牌手机的类,同样如果我们在增加一个手机品牌,也要在各个手机样式类下增加。
  2. 违反了单一职责原则,当我们增加手机样式时,要同时增加所有品牌的手机,这样增加了代码维护成本。
  3. 解决方案-使用桥接模式

    桥接模式(Brige)-基本介绍

  4. 桥接模式(Bridge模式)是指:将实现与抽象放在俩个不同的类层次中,使俩个层可以独立改变。

  5. 是一种结构型模式
  6. Bridge模式基于类的最小原则,通过使用封装 、聚合及继承等行为让不同的类承担不同的责任。它的主要特点是把抽象(Abstraction)与行为实现(IMplementation)分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展。

    桥接模式(Brige)-原理类图

    image.png

    原理类说明:

  7. client类:桥接模式的调用者

  8. 抽象类(Abstraction):维护了Implementor /即它的是西安类ConcreteImplementorA .. 而这时是聚合关系,Abstraction 充当桥接类
  9. RefinedAbstraction:是Abstraction的子类
  10. Implementor:行为实现的接口
  11. ConcreteImplementorA & B 行为的具体实现
  12. 从UML类图中:这里的抽象类和接口是聚合关系,其实 调用与被调用关系

    桥接模式解决手机操作问题

    image.png
    思路分析:
    image.png
    源码实现 (参考bridge):

    桥接模式在JDBC的源码剖析

    类图:image.png

    桥接模式的注意事项和细节

  13. 实现了类抽象和实现布冯的分离,从而极大的提供了系统的灵活性,让抽象部分和实现部分独立开来,这有助于系统进行封层设计,从而产生更好的结构化系统。

  14. 对于系统的高层部分,只需要知道抽象部分和实现布冯的接口就可以了,其他的部分由具体的业务来完成
  15. 桥接模式的引入增加了系统的理解和设计难度,由于聚合关系建立在抽象层,要求开发者针对抽象进行设计和编程。
  16. 桥接模式要求正确识别出系统中来个对立变化的维度,因此其他使用范畴有一定的局限性,即需要有这样的应用场景。

    常见应用场景:

    对于那些不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统,桥
    接模式尤为适用
    .
    2) 常见的应用场景:
    -
    JDBC驱动程序 -
    银行转账系统
    转账分类: 网上转账,柜台转账,AMT转账
    转账用户类型:普通用户,银卡用户,金卡用户
    ..
    -
    消息管理
    消息类型:即时消息,延时消息
    消息分类:手机短信,邮件消息,QQ消息