美文网首页
写代码之前:⑤分析与设计

写代码之前:⑤分析与设计

作者: 影子喵喵喵 | 来源:发表于2024-08-06 09:27 被阅读0次

1、类的分析与设计

这可能是大多数研发同学比较熟悉的领域,经典的设计模式,类之间的关系,泛化,组合等。

但是类从哪里来呢?是从需求之中凭空产生?又或者突然灵光一闪,有了类的雏形?

对类的进行设计与分析之前,需要做的是找到他。

2、识别类

经历过业务流程,系统建模,我们终于来到了系统里面,来寻找类。我们所熟知的类有三种,边界类,控制类和实体类。

边界类是外部系统在系统内部的映射,借由边界类,系统和外部系统交互。所以一些接口请求,输入输出都属于边界类的职责。在仓配系统中,商城就是一个边界类,将外部系统转移到内部系统来,屏蔽了接口请求相关的细节。

控制类往往是体现用例流程,一般而言,一个用例就是一个控制类。

实体类则是系统的核心,实体类良好设计能够提高系统的复用程度,减低系统的复杂性。

3、找实体名词

知道了有这三个类还是不足够我们识别具体的类,识别具体的类需要去业务流程,系统流程,系统规约中经常出现的名词。

在上面的流程图中,订单,商城,设备,物流,用户是反复出现的名称,说明这些类必然存在。

找到这些业务实体,就是找到类的第一步。

4、找到属性

类的属性也不是凭空产生的,需要对业务实现有价值,用户不一定有姓名,在物流上下文中,用户的属性就只有 ID,收货地址。

找到那些对于系统实现必不可少的属性,放到正确的类中。如仓配系统中的订单,包含订单号,商品,用户。用户则有收件地址。

在仓配系统中,用户只有一个地址,在商城的系统中,用户则有多个地址,充分说明了,不同的上下文中,类的属性不是固定的。

5、找职责

从业务规则和约束中,可以找到一些实体应当有的职责,如订单,就有验证合法性的职责。

有时候,有些对象看起来信息很富裕,但是却没有什么职责,说明他是一个值对象,像上图中的用户和收件地址,我们不关心他的 id,只关心收件地址,收件地址就代表着这个用户。

6、状态机

找到类和对应的职责,对于一些主要的实体类,还需要设计出他的状态机,清晰的状态机能有效地厘清系统内的一些事件和状态,增强系统整体的健壮性。

仓配中的订单,从用户购买的待发货状态,到通知物流发货,再到实际发货,物流签收有一些列状态的演变。

相关文章

  • OKHttp全解析系列(一) -- HTTP基础

    前言 本系列主要分析OKHttp源代码的框架和设计思想,因为OKHttp实现了HTTP协议,所以在做源代码分析之前...

  • 编译原理

    步骤 词法分析 语法分析 语义分析与中间代码产生 优化 目标代码生成 文法 3型文法:正则文法,用于描述程序设计语...

  • 2018-12-25 web项目开发的一般流程

    1、需求确定 2、分析与设计:架构分析与设计 3、分析与设计:业务逻辑设计 4、分析与设计:界面设计 5、开发环境搭建

  • 用户需求分析

    用户需求分析 用户需求分析是指在系统设计之前和设计、开发过程中对用户需求所作的调查与分析,是系统设计、系统完善和系...

  • LoRaWAN网关移植记录

    之前写的LoRaWAN GW NS代码中提到了已经基于Twisted实现了GW/NS代码。其中NS代码设计起来比较...

  • 自己动手设计代码编辑器——(五)分析源代码

    因为之前的设计不合理,就重新开了工程。花了几天时间,重做的进度赶上之前的了今天来说说分析源代码源码分析中会用到的其...

  • 想进阿里P7,你必须掌握这些技能专题

    源码分析专题 (源码经典设计模式,如何写代码,提升技术审美,提高核心竞争力!) 1.常用设计模式 2.sping5...

  • 想进阿里P7,你必须掌握这些技能专题

    源码分析专题 (源码经典设计模式,如何写代码,提升技术审美,提高核心竞争力!) 1.常用设计模式 2.sping5...

  • JPEG图像

    算是阅读隐写学原理与技术做的笔记 LSBR替换 LSBR容易产生值对效应 LSB隐写代码: 分析代码我们可以看出,...

  • 设计模式—关于概论部分的学习

    一、代码与设计模式 1.1. 我们写代码到底是在写什么? 大家可以把自己的项目或者是代码理解成我们就是在编写模块,...

网友评论

      本文标题:写代码之前:⑤分析与设计

      本文链接:https://www.haomeiwen.com/subject/zrfwhjtx.html