让技术人员看得懂的流程(4)——设计模型

简介:

                       让技术人员看得懂的流程(4

                                    ——设计模型

完成了“领域模型”阶段后,面向对象已经初具雏形,我们已经看到了那熟悉的“对象”了,例如“商品”、“交易”、“商品清单”等,看起来已经进入了面向对象的世界了,你是否已经摩拳擦掌,跃跃欲试,准备开始编码了呢?

且慢,“领域模型”只是万里长征的第一步,通过领域模型分析得到的类还不能指导编码,还需要经过“设计模型”这个阶段的处理,才能基本上指导编码。

前面我们提过,领域模型的对象是没有方法的,但最终的实现肯定是有方法的,因此设计模型的第一个任务就是“为对象添加方法”

那么是否给领域模型中的对象添加完方法就算是完成了设计模型呢?没有这么简单,给领域模型中的对象添加方法只是设计模型中最简单的一部分工作,设计模型阶段第二个任务是“围绕领域对象设计出非领域对象”。

这句话看起来比较难拗口,为什么要设计出非领域对象呢?道理很简单:领域模型中的对象是静态的,要让这些静态的对象动起来,才能最终完成客户需求。因此必须添加非领域对象,让这些非领域对象来完成让领域对象动起来的事情。

例如:“商品”本身是一个领域对象,但是这个对象是谁创建、谁使用、谁管理呢?领域模型中并没有相关的对象来完成这些职责,因此需要我们设计额外的对象来完成这些职责。

经过前两步之后,看起来设计模型的对象都已经出来了,但是我们如何知道设计得好还是不好,以什么标准来判断我们的设计是否正确呢?相信基础扎实的朋友们已经想到了,这就是万人期待、万众瞩目的,大家都耳熟能详的一个东东:设计模式。设计模型第三个任务就是“应用设计模式、设计原则”

通过应用设计模式、设计原则,又会添加一批新的对象,接口、父子类、继承、依赖等面向对象的相关概念也逐步清晰,这样就为最终的编码打下了坚实的基础。

到这里为止,“设计模型”阶段的任务基本讲述完了,下面我们看一个简单的样例,还是以POST机为例:

在“领域模型”阶段我们已经分析出了“商品”、“商品清单”、“交易”三个领域对象,我们按照前面所讲的三个步骤一步一步来看“设计模型”阶段如何做(都以“商品”对象为例)。

第一步:“为对象添加方法”

商品对象的方法有:“获取名称”、“获取条形码”、“获取价格”等(有兴趣的朋友可以自己完善),这样对象的几个方法就出来了:getName()、getBarCode()、getPrice()。

第二步:“围绕领域对象设计出非领域对象

“商品”对象的生命周期包括:创建、修改、使用、销毁,这些任务对象本身是无法完成的,必须添加新的对象来完成,这里我们添加一个新的对象“商品管理”来完成这些任务。这样“商品管理”对象就出来了,而这个对象在用例模型和领域模型中都是没有的。

第三步:“应用设计模式、设计原则”

我们简单的应用DIP原则(可以参考我的Blog软件设计漫谈之三:30分钟掌握面向对象类的设计原则》)就可以发现,“商品”本身应该作为一个接口,因为不同的商品之间是有很大差异,“商品”又可以分为“食品类商品”、“饮料类商品”、“服装类商品”等等。这样应用了设计原则后,在领域模型中作为对象的“商品”,在设计模型中不再是具体对象,而是接口,然后这个接口派生出“食品类商品”、“饮料类商品”、“服装类商品”等具体对象。

 

以上的步骤不是瀑布式的,而是迭代式的,例如:第三步识别出“饮料类商品”这个对象后,也需要为它添加方法、设计出相关的类。

相关文章
|
1天前
|
数据采集 人工智能 安全
|
10天前
|
云安全 监控 安全
|
2天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
882 150
|
15天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1619 8
|
6天前
|
人工智能 前端开发 文件存储
星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择
星哥带你玩转飞牛NAS,部署开源笔记TriliumNext!支持树状知识库、多端同步、AI摘要与代码高亮,数据自主可控,打造个人“第二大脑”。高效玩家的新选择,轻松搭建专属知识管理体系。
362 152
|
7天前
|
人工智能 自然语言处理 API
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸
一句话生成拓扑图!next-ai-draw-io 结合 AI 与 Draw.io,通过自然语言秒出架构图,支持私有部署、免费大模型接口,彻底解放生产力,绘图效率直接爆炸。
588 152
|
9天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
545 13
|
2天前
|
编解码 人工智能 机器人
通义万相2.6,模型使用指南
智能分镜 | 多镜头叙事 | 支持15秒视频生成 | 高品质声音生成 | 多人稳定对话