`

图书馆惊魂记之一(一个简单的领域模型的建立过程)

阅读更多

在大学里的某一天,一个漆黑的夜晚,我来到了一个学校里阴森的图书馆,虽然说不喜欢,但是为了考试不要零蛋,所以拼死也要温书了。来到图书馆的柜台前,遇到了图书管理员。然后我跟管理员说:“我来借书了”,管理员头也不抬的把手一指:“书架在那边,自己去找”。

--------------------------------------------------------------------------------

image

---------------------------------------------------------------------------------

书架实在是很多,都是分门别类的把书放好在上面的,每个书架上都有标签,标明了这个书架上放的什么类型的书。

---------------------------------------------------------------------------------

image

---------------------------------------------------------------------------------

于是我一排排的在书架上开始浏览有些啥书

---------------------------------------------------------------------------------

image

---------------------------------------------------------------------------------

看到一本还不错的书,我就把书取出来,然后看看书的内容

------------------------------------------------------------------------------------------------

image      image

------------------------------------------------------------------------------------------------

看了看,写的不错,于是拿着这本书去找管理员:“我要借这本啊”。管理员二话没说,拿个本子记下来我借了这本书,然后在书上打个标签

------------------------------------------------------------------------------------------------

image

------------------------------------------------------------------------------------------------

然后我就接到了这本有用地书,然后回去温书考试去了。

 

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

以上的内容只是一个简单例子的模拟,而生成的类图也是很粗略的,我们通过对业务行为的分析(经典的借书过程来分析得到上面的图形-为了简单我直接用了VS的类图,其实不是很规范,有很多建模工具可以使用,领域模型的分析没有一定之规所以可能每个人分析出来的模型并不相同,所以如果你觉得有其他的理由,画成了其他的样子,那是完全合理的),回到主题,我们要通过领域模型来驱动我们的设计,但是,我们要弄明白的是什么是领域模型的分析,适合什么地方,什么时候不适合。

领域模型(Domain Model)是一个商业建模范畴的概念,他和软件开发并无一丝一毫的关系,即使一个企业他不开发软件,他也具备他的业务模型,所有的同行业的企业他们的业务模型必定有非常大的共性和内在的规律性,由这个行业内的各个企业的业务模型再向上抽象出来整个行业的业务模型,这个东西即“领域模型”。一个掌握了行业领域模型的软件公司,根本不需要再给人家开发项目了,根本不需要靠软件开发养活自己了,你光给这个行业的企业提供业务咨询已经赚得非常丰厚的利润了。

由此我们可知,领域模型的分析并不是我们要做这个软件的时候要做的,而是在这个软件所要实现的业务模式出现的时候就可以开始,所以领域建模比较适合需求比较固定,且业务模式比较成熟的领域。我们首先建立起一个领域模型,然后用最简单直接的类去实现这个模型。这个时候我们不涉及数据库以及持久化等等细节,然后对模型进行精化,利用设计模式将类进行分解,将领域模型的类的职责用多个小类来实现。

比如User类,我们可以用Factory模式加上Facade模式把这个类的职能和持久化行为(数据层的行为)解耦。

其实DDD不一定就是代表着臃肿的实体类,而我们很多时候是在自己设计的时候因为对OO和设计模式的运用不够熟练从而设计出了臃肿的实体类(我自己其实也经常弄出这种类出来-不过通过运用设计模式重构,在大多数情况下是可以改变的)。作为一个合格的程序员,能够快速的完成需求是必要的条件。但是如果只是要求能够做出来实现需求,是不是对自己的要求过低了点,我们不光是需要能跑起来的程序,还需要稳定健壮的程序,更甚的是优美的实现程序,如果仅仅是满足于实现需求,借用星爷的一句话:人没有追求,那和咸鱼有什么分别:)

分享到:
评论

相关推荐

    换装CPU风扇惊魂记.pdf

    《换装CPU风扇惊魂记》这篇文档讲述的是作者DIY电脑时遇到的CPU风扇噪音问题及解决过程,其中涉及到一些计算机硬件知识和技术操作。以下是主要的知识点: 1. **CPU风扇**:CPU风扇是电脑中用于散热的重要部件,它...

    密室惊魂_CS.sln

    Unity 3d 实现的密室惊魂小游戏 其中使用了射线交互,adws键上下控制机枪左右移动,瞄准物体 点击鼠标左键击中 同时 射线击中物体 物体被消灭

    C0754 圣诞夜惊魂(11页)_html_

    标题中的"C0754 圣诞夜惊魂(11页)_html_"可能是指一个关于网页设计或HTML编程的学习资料集,其中包含了11个页面的内容,专门探讨了"圣诞夜惊魂"这一主题,可能是用HTML语言创建的一个互动网页或故事展示。...

    宁工ps大作业,电锯惊魂主题横板海报

    这篇文档将围绕“宁工ps大作业,电锯惊魂主题横板海报”这一主题,深入探讨Photoshop(简称PS)在设计领域的应用,以及如何通过PS创作出具有电锯惊魂风格的横版海报。这个作业项目包含了设计素材、报告和PS源文件,...

    惊魂圣诞夜ppt模板.rar

    他们渴望在传统的圣诞元素中注入新鲜的创意与刺激的元素,创造出一个独特的“惊魂圣诞夜”。如今,一款名为“惊魂圣诞夜ppt模板”的PPT模板为这样的需求提供了一个完美的解决方案。 这款PPT模板通过将星空与夜空的...

    惊魂玩偶_csdn

    这个故事中涉及到的IT知识点主要集中在描述过程中的一些技术细节和概念,以下将详细介绍: 1. 信息的获取与传递:故事中灵儿与妈妈通过手机进行联系,这体现了现代通信技术中的移动通讯能力。在现实生活中,智能...

    高二年级英语期中考试卷.doc

    10. 英国电影史:《惊魂记》作为英国电影史上的经典之作,可能引导学生研究英国电影的发展历程,以及这部电影对后世的影响。 总结,这份高二英语期中考试卷的阅读理解部分将涉及到电影史、导演艺术、电影技术和心理...

    Scratch少儿编程项目音效音乐素材-【影视作品】音效-电锯惊魂 i want to play a game等3个.zip

    Scratch是一款由麻省理工学院(MIT)设计开发的面向儿童的图形化...总的来说,这个压缩包为少儿编程教育提供了一种独特的资源,将经典电影音效与编程相结合,使得学习过程充满乐趣和挑战,激发孩子们探索和创造的欲望。

    Unity 与 CryEngine优缺点对比

    构建这些游戏是一个艰难的过程,需要特殊的游戏引擎,两个最常用的游戏引擎是 Unity 和 Cryengine。这两款软件都是专为简化游戏开发过程而设计的。已经使用这些游戏引擎开发了大量游戏,如刺客信条、Unity、孤岛惊魂...

    孤岛惊魂MOD游戏网页模板

    总的来说,孤岛惊魂MOD游戏网页模板是一个为游戏MOD社区量身打造的工具,它集成了美观、实用和易用的特点,旨在提升游戏MOD的展示质量和用户体验,同时也降低了创建专业游戏网页的技术门槛。对于想要展示自己创意的...

    flash游戏编程指南(全).pdf

    - **第十二章**:制作一个Viral Game:隧道惊魂 综上所述,《Flash游戏编程指南》是一本系统介绍了如何使用ActionScript 3.0进行游戏开发的专业书籍。通过对基本概念的深入讲解及具体项目的实践指导,帮助读者建立...

    有关项目开发的演讲PPT

    游戏开发是一个涵盖多个领域的复杂过程,涉及创意设计、技术实现、艺术创作以及市场推广等多个环节。在本文中,我们将深入探讨使用游戏开发引擎,特别是Unity,进行项目开发的知识点。 Unity游戏引擎是一款广泛使用...

    我与书的故事作文.doc

    4. **科幻小说的魅力**:在寻找学习资料时,作者偶然发现并沉浸于《惊魂街惊魂记》这部科幻小说中,体现了科幻文学对读者的吸引力,以及阅读时的投入感和沉浸式体验。 5. **阅读与生活平衡**:文中描述了因过于专注...

    Scratch少儿编程项目音效音乐素材-【影视作品】音效-电锯惊魂语音音效4个.zip

    Scratch少儿编程项目音效音乐素材-【影视作品】音效-电锯惊魂语音音效4个.zip

    2017年影视鉴赏期末考试题与答案.docx

    - **知识点**: 心理学家卡尔·荣格认为,艺术是“一个民族通过艺术家个人之手发出来的一种民族心声”。 - **解析**: 这意味着艺术作品不仅仅是个人创造的结果,也是集体无意识和社会文化的反映,承载着更深层次的...

    <古墓惊魂>J2ME GAME

    这是我2005年末开发的益智探险类游戏.当时是第一次制作45度视角的游戏.游戏的设计蛮具有游戏操作性的,现在回过头看时也忍不住会再玩上几遍. 游戏过程是通过收集道具来清除迷宫中的怪物,直到找到出口.

    2018‘’万圣惊魂夜‘’万圣节主题活动方案.rar

    1. **活动主题**:2018年的万圣节活动主题为“万圣惊魂夜”,旨在打造一个既刺激又有趣的恐怖氛围。活动设计应围绕这个主题展开,包括装饰、服装、游戏和表演等元素,使参与者能够深入体验到万圣节的神秘和惊喜。 2...

    孤岛惊魂游戏网页模板

    孤岛惊魂游戏网页模板是为游戏爱好者和开发者设计的一款网页设计资源,它结合了“孤岛”和“惊魂”的主题元素,创造出引人入胜的视觉体验,旨在吸引玩家并提供一个互动的游戏宣传平台。这个网页模板适用于创建游戏...

    4D影院使《惊魂电影院》重放异彩.doc

    4D影院使《惊魂电影院》重放异彩.doc

Global site tag (gtag.js) - Google Analytics