我的工程实践业务是设计和实现一个搜索引擎,并在此基础上搭建一个食谱查询服务。
1)找出业务中用到的类
食谱、食材、食材处理步骤、食谱爬虫、请求分发处理器、分词器、相似度衡量器(计算词向量相似度)、食谱Queryer、Web服务请求者、用户、系统管理员
2)建立类和类之间的联系
类与类之间的关系通常包括:
关联:意味着两个模型之间存在语义联系,在用例中的表现通常为两个名词被动词连接起来
如食谱被爬虫添加、爬虫被管理员配置等。
组合:即包含关系,整体和部分不可分开且生命周期一致
如食材和食材处理步骤是食谱的一部分,它们之间是组合关系。
依赖:表明一个元素(源元素)的定义或实现依赖另一个元素(被依赖元素)的定义或实现
如相似度衡量器要将词向量转化器输出的词向量结构进行相似度计算,故相似度衡量器依赖于词向量转化器。
继承:一般到特殊
如用户和系统管理员都属于Web服务请求者请求服务。
3)添加类的重要属性
类 | 方法 | 属性 |
系统管理员 |
管理爬虫、管理数据库、管理ACL表
|
账户名、密码 |
用户 |
按食材查询食谱、按食谱名查询食谱 |
Cookie |
请求分发处理器 |
接收请求、解析请求、URI路由、静态文件服务 |
Connection List、Request Router |
分词器 | 对输入串分词 | |
相似度衡量器 | 词向量相似度计算 | 相似度算法参数 |
爬虫 | 配置、启动、停止 | Target URI、Worker number 、Frequency |
食谱Queryer | 食谱CRUD | 食谱集合、索引 |
最终关键类图: