我们在开发中可能会遇到这样一类问题:
1 你需要分步骤录入一个几页信息的大数据表
2 系统会根据输入数据根据某种规则分析出结果报表
3 结果需要持久化
4 结果可以修改
5 结果报表可以根据规则重新生成
6 每个输入有唯一的一个对应的报表
7 分析规则是容易测试的
我在解决这个问题的时候花了很多的时间,绕了个大弯,后来才发现是策略的问题,把最终设计的结果整理下:
Problem
用户记录整个过程的表,每次处理都有这么一张表:
account_id, 用户ID
input_id, 输入
output_id, 输出
stage, 目前阶段(等待输入,输入完毕,处理完毕)
problem_version 版本
StorageSource
用于保存录入信息,所有信息可以都保存在一个表里(横表),这种方法最大的问题就是无法动态的修改或者增加题目,好处是简单,对于输入相对稳定的人来说可以采用横表设计。对于动态要求较高的采用竖表比较合适。
如果采用横表,字段为
quest1,quest2....,questn...,profile_stage,created_at,updated_at
one_to_one Problem
如果是竖表
problem_id, quest_key, quest_answer, created_at, updated_at
这种设计灵活,但是存取操作相对复杂
many_to_one Problem
ReadableSource
将StorageSource表和其他信息包装到一个ReadableSource表中,作为分析输入依赖的唯一类
ViewableResult
将分析结果全部输出到view对象,作为输出的唯一依赖
Analyzer
将业务规则封装到该对象,采用builder模式来设计
builder.read(readable_source)
builder.build_first_stage
builder.build_second_stage
viewable_result = builder.viewable_result
StorageResult
将输入结果ViewableResult持久化
分享到:
相关推荐
系统分析和系统设计面临着许多挑战,包括需求不确定、技术复杂、时间紧迫和资源有限。 * 系统分析和系统设计的挑战可以通过以下方法来解决:采用结构化方法、使用先进的技术和工具、加强沟通和协作。 系统分析与...
5. 学会编写系统分析说明书、系统设计说明书等 三、主要内容 1. 调查一个实际单位或部门 2. 在调查或了解的基础上,进行系统分析 3. 根据逻辑设计方案,进行系统设计 4. 模拟系统实施 5. 编写课程设计报告 四、...
在软件开发过程中,需求分析与系统设计是至关重要的阶段,它们构成了软件工程的基础。这份"软件需求分析与系统设计最佳学习资料"集合了东北大学李哲洙老师的课堂讲义、原版英文的需求分析与系统设计第三版PPT,以及...
【学生成绩分析系统的设计与实现】 在计算机科学领域,设计和实现一个学生成绩分析系统是一项常见的任务,尤其在毕业设计中。这样的系统旨在帮助教育机构自动化成绩管理过程,提高效率并提供深入的数据分析。以下是...
MIMO控制系统设计需要考虑输入输出之间的耦合效应,采用更高级的控制策略,如解耦控制和多变量优化,以实现高性能的控制表现。 ### 控制理论的未来 控制理论的未来发展将更加注重智能化、自主性和网络化。人工智能...
接下来是系统设计阶段,包括功能模块结构图、数据库概要设计(通过E-R图表示)以及代码设计和输入/输出界面设计。吕洪杰继续参与绘制功能模块结构图,而刘治麟负责绘制ER图和代码输入与输出。这个阶段的目标是将需求...
通过MATLAB,工程师和技术人员可以获得一个全面而高效的工具集,用于解决复杂系统设计中的挑战。无论是学术研究还是工业应用,MATLAB都发挥着不可或缺的作用,推动着工程技术领域的创新和发展。
在飞机控制系统设计中,俯仰角的控制是一个关键的环节,因为它直接影响到飞机的飞行稳定性。飞机的俯仰运动由其纵向动力学决定,而这一动力学行为可以用一组非线性的耦合微分方程来描述。在理想情况下,这些方程可以...
首先,需求分析是系统设计的基础。通过对图书馆日常业务流程的深入理解和研究,确定系统必须具备的各项功能,如图书录入、读者信息管理、图书借阅与归还、逾期提醒等。需求分析阶段需要明确用户需求,确保系统能够...
首先,架构分析阶段是系统设计的起点。在这个阶段,我们根据关键需求,比如“添加客人”这一用例,进行系统分析。例如,南阳宾馆管理系统可以分为三个主要的分析类:用户界面类、实体类和持久化类。用户界面类负责...
【机械行业管理知识分析系统设计】是一个针对机械行业管理和知识分析的系统设计项目,主要涉及机械原理、机械设计和机械系统设计三个核心领域的知识。这三个领域是机械工程学科的基石,对于理解和创建机械设备至关...
本文将对学生成绩管理系统进行面向对象的分析和设计,包括需求调查分析、学生成绩管理系统设计和功能模型等方面的内容。 一、 需求调查分析 在需求调查分析阶段,我们需要了解学生成绩管理系统的基本需求。管理员...
- **组织结构分析**:分析公司的组织结构,明确各个部门及其职责,确保系统设计与实际业务流程相匹配。 - **业务流程分析**:详细描述原材料采购至供应的整个过程,包括供应商选择、采购原材料、货品检验、入库处理...
计算机信息系统设计与分析知识点总结 本资源摘要信息将对计算机信息系统设计与分析的相关知识点进行总结和解释。 一、系统分类 系统可以分为自然系统和人工系统,这种分类的标准是按照系统的起源分类。 二、信息...
在设计和理解电子系统时,人们常常采用黑箱分析法,通过分析系统的输入输出特性而不涉及内部结构,可以有效地对电子系统进行功能特性和行为方式的研究。 现代电子设计的特点强调了系统性、社会性、创造性、最优化、...
- 存储系统设计:存储器分为高速缓存和主存,采用层次化结构以提高访问效率。输入输出时序和模块连接方式需要确保数据正确传输且不影响系统稳定性。 - 微程序控制器:利用教学机的系统,设计微指令格式和微程序流程...
1. 系统设计与设备选型:在设计控制系统时,首先需要对系统进行分析,判断系统的输入输出点数、复杂程度和内存容量需求,然后选择合适的设备和 PLC。 2. I/O 赋值(分配输入输出):将系统的输入信号和输出信号进行...