倚楼听风雨
淡看江湖路

阿里巴巴Java开发手册第七章-设计规约(上)

设计中体现艺术家的气质,我们程序员就是天生的艺术家。自从买了《阿里巴巴 Java 开发手册》老四就一直爱不释手,最后发现纸质书中多了一个章节,主要讲解软件设计过程中UML(Unified Modeling Language:标准建模语言)设计准则以及基本的架构理念。所以老四开始为这本书挖坑,精心整理,附上些许不成熟的、更多的示例和说明,希望对看到的人有所帮助。如果您发现文中内容有误或者本人只是不够专业,请您不吝啬的指点批评出来,我们共同进步。

1.[强制] 存储方案和底层数据结构的设计获得一致评审通过,并沉淀文档。

说明:有缺陷的底层数据结构容易导致系统风险高、可扩展性差,重构成本因历史数据迁移、系统平滑过渡也会陡然增加。所以,对存储方案和数据结构需要进行认真的设计和评审,生产环境提交执行后,团队成员需要进行double check。

正例:评审内容包括存储介质选型、表结构设计能否满足技术方案、存取性能和存储空间能否满足业务发展、表或字段之间的辩证关系、字段名称、字段类型等;数据结构变更(如在原有表中新增字段)也需要进行评审通过后再上线。

老四附言:

没啥好说的,无论的你身处成熟体系的公司还是初创公司,业务、技术文档是开发之前必不可少的,对于系统的评估无论是数据库层面还是项目架构层面都要做充分、尽可能全面的评估并沉淀为文档。这个很重要,否则以后你都不知道你曾经做了什么。

2.[强制] 在需求分析阶段,如果与系统交互的User超过1类,并且相关的User Case超过5个,那么使用用例图来表达结构化需求会更加清晰。

用例图:用例图,展现了一组用例(User Case)、参与者(actor)以及它们之间的关系。从用户角度描述系统的静态使用情况,从而建立需求模型。

老四附言:

用例图的要素:

  • 参与者:与当前系统交互的角色
  • 用例:椭圆表示,代表系统提供的服务或者功能单元
  • 子系统:将前两者结合起来形成一个功能服务体系。
  • 关系:包括关联、泛化、包含、扩展,可以理解为参与者与用力之间联系的四种关系

用例图示例:

3.[强制] 如果某个业务对象的状态超过3个,那么应使用状态图来表达并且明确状态变化的各个触发条件。

说明:状态图的核心是对象状态,首先明确对象有多少种状态,然后明确两两状态之间是否存在直接转换关系,再明确触状态转换的条件是什么。

正例:淘宝订单状态有已下单、待付款、已付款、待发货、已发货、已收货等。比如已下单与已收货两种状态之间是不可能有直接转换关系的。

老四附言:

状态图:描述一个对象所处的可能状态以及状态之间的转移。用状态图建模可以帮助开发人员分析复杂对象的各种状态的转换,以及对象何时执行怎样的动作。

状态图的符号:

  • 状态-重要
  • 转移-重要
  • 初始状态
  • 最终状态
  • 历史状态
  • 判定

根据孤尽的描述与扩展,老四做一个状态图的示例如下:

4.[强制] 如果系统中某个功能的调用链路上涉及的对象超过3个,则应使用时序图来表达并且明确各调用环节的输入与输出。

说明:时序图反映了一系列对象间的交互与协作关系,可以清晰立体地反映系统的调用纵深链路。

老四附言:

时序图:描述系统中类和类之间的交互,将这些交互建模成消息交换,每条消息都代表了类的一个操作或者状态机改变的触发事件

组成的元素:

  • 对象(Object)
  • 生命线(LifeLine)
  • 激活(Activate)
  • 消息(Message)
  • 实例

老四附一张自己画的时序图示例以供参考:

5.[强制] 如果系统中模型类超过5个,并且存在复杂的依赖关系,则应使用类图来表达并且明确类之间的关系。

说明:类图就像建筑领域的施工图,如果搭平房,可能不需要,但如果建造"蚂蚁Z空间"大楼,则肯定需要详细的施工图。

老四附言:

类图:显示了一组类、接口、协作以及他们之间的关系。

类图中常见的几种关系:

  • 泛化 - 一种继承关系
  • 实现 - 类与接口的关系
  • 关联 - 拥有的关系
  • 聚合 - 整体与部分的关系,部分可以离开整体而单独存在。
  • 组合 - 整体与部分的关系,部分不能离开整体而单独存在。
  • 依赖 - 使用的关系,一个类的实现需要借助另一个类来实现
  • 泛化=实现>组合>聚合>关联>依赖

老四附类图示例一张:

更博不易,喜欢的老铁有能力烦请赞助盒烟钱,点我去赞助。抱拳。

赞(3) 给你买杜蕾斯
本站原创文章受自媒体平台原创保护,未经允许不得转载高老四博客 » 阿里巴巴Java开发手册第七章-设计规约(上)
分享到: 更多 (0)

开始你的表演 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下老四,鼓励我更好的创作

支付宝扫一扫打赏

微信扫一扫打赏