乱弹琴的系统设计套路(适合新手)
作者:罗代均 http://hi.baidu.com/luodaijun
一家之言,不对可以指出,就事论事,切勿人身攻击!
第0步 确定问题领域
一个网友的简单需求
电子教材管理系统,教材要分章节显示内容
我们要分析的领域就是电子教材管理了
第一步 分析领域内对象
对象,是这里对象是哪些名词以及逻辑概念, 这里分析对象的属性
有些对象不但有属性,还有方法,而有些对象,只有属性值,就是值对象了
这个需求中,大概有下面三个对象,以及主要的属性
A) 教材
class Book{
private Long id; //教材标识
private String title; //教材名称
private String author; //作者
....//还要很多属性
}
B) 目录
class Category{
private Long id;//目录标识
private String title; //目录名称
}
C) 文章内容
class Article{
private Long id;//文章标识
private String memo;//文章内容
}
第二步 分析对象间关系
对象间关系,主要有 一对一,一对多,继承三种
从教材入手,先看看 教材 和 目录 的关系
目录,显然属于一本教材的,所以修改对象目录,加上所属教材属性
还有,目录是树形的,还有父目录
class Category{
private Long id;//目录标识
private Long title; //目录名称
private Book book; //所属教材
private Cagtegory parCate; //父目录
}
再看看目录和文章的关系,文章是属于某个章节的,章节就是目录了
class Article{
private Long id;//文章标识
private String memo;//文章内容
private Cagegory category; //所属目录
}
这个三个对象,由教材开始导航的,教材找到目录,目录再找到文章
第三步,对象持久化
由上面的分析,我们得到了 教材,目录,文章三个对象,下面就需要用ORMAP技术持久化了,典型的,当然是持久化到数据库了,使用hibernate和jpa技术,可以自动创建数据库表,不用数据库设计了.
当然,考虑到效率问题,有些表,还是需要我们手动调整,比如加入一些冗余字段,添加索引等。
乱弹琴的系统设计套路(适合新手)相关推荐
- 适合新手:从零开发一个IM服务端(基于Netty,有完整源码)
本文由"yuanrw"分享,博客:juejin.im/user/5cefab8451882510eb758606,收录时内容有改动和修订. 0.引言 站长提示:本文适合IM新手阅读 ...
- GitHub 上有哪些适合新手跟进的优质项目?(附地址)
作者 | 小G 来源 | 公众号GitHubDaily 从 2015 年至今,我们累计在 GitHub 上看了上万个开源项目,并一直关注着开源圈的动态,通过这样的习惯,使得我们挖掘出了不少优质的 Gi ...
- 交换机配置软件crt安装_非常详细的锐捷二层交换机配置教程,适合新手小白
笔者上一篇文章写了关于锐捷三层交换机配置教程,但是这只是核心的配置,还不能搭建一个完整的企业网络.那么这一篇就来讲一下锐捷的二层交换机配置,比起三层交换机的配置,二层交换机配置就非常简单了.同样,今天 ...
- MYSQL服务的极简免配置快绿色速安装法[适合新手和懒人]
强调:适合新手和懒人! mysql最快速安装方法(极简.免配置): 下载官方绿色压缩包,解压到某目录最好为英文),用管理员权限打开CMD,定位到mysqld.exe所在目录,直接运行 mysqld - ...
- python基础教程第二版和第三版哪个好-python基础教程 2版和3版哪个适合新手?!...
python基础教程 2版和3版哪个适合新手? 现在学是学python3. 两者的差异发者本身影响并不大,个别语法细微的差比如python3的print数方式使用,一些常用模块的名称差异,一些机制的差 ...
- python基础教程第三版和第二版选哪个-python基础教程 2版和3版哪个适合新手?!...
python基础教程 2版和3版哪个适合新手? 现在学是学python3. 两者的差异发者本身影响并不大,个别语法细微的差比如python3的print数方式使用,一些常用模块的名称差异,一些机制的差 ...
- python难不难学-超级适合新手学习的python教程,入门其实不难?
在互联网时代很多人都希望掌握一个与互联网相关的知识,比如Python的知识就非常重要,因为无论是操作新媒体平台还是去制作一些软件,我们都需要掌握一些Python的技巧,而且学习一些Python的知识, ...
- python入门新手项目-Python入门实战项目有哪些适合新手?
Python入门实战项目有哪些适合新手?目前市面上有很多适合新手的Python入门练手项目,Python入门需要理论与实践相结合,前面夯实基础知识,后面通过实战项目帮助你更好的运用这些Python知识 ...
- 安装完毕freebsd的后续工作,安全设置及其他(适合新手)
本文只适合新手,因为我也是新手,仅作为自己的工作记录和以便于日后查找. 第一步使ssh客户端顺利登陆 我想哪一个技术人员也不想趴在服务器旁边操作除了安装系统以外的工作吧,反正我们单位的服务器在机架最底 ...
最新文章
- Java按钮哪个方法响应_当用户点击按钮时,Java程序采用什么方法来响应?()
- 2019前沿信息科技创新论坛成功举办
- python在线投票系统 统计票数_分层分平台,让每个学生享受教育公平 ——冯敬益老师的Python编程教学探索...
- zblog如何调用HTML,Zblog调用栏目文章的方法
- 黑马程序员之《String 类练习》
- node中异步IO的理解
- Android学习之SQLite
- Xamarin效果第十七篇之AR GIS
- 使用 pycharm安装各个模块
- 【云周刊】第120期:麒麟来了!PUE逼近1.0,阿里展示液冷黑科技
- ios h5 出现的问题
- kafka分区和es的分区支持对比
- php7.0康乐安装_Windows服务器安装配置PHP7.0环境图文教程
- TensorFlow中tf.ConfigProto()配置Sesion运算方式
- linux安装 soapui_SoapUI命令行方式运行
- 伍德里奇计量经济学第四章课后计算机作业,伍德里奇---计量经济学第4章部分计算机习题详解(MATLAB).pdf...
- java 集合的并交差_java中计算集合的交差并集示例代码
- 家庭购药新指南:2020-2021年中国家庭常备药上榜品牌榜单公布
- 使用VMware10虚拟机安装Linux系统(能力工场)
- layim手机版嵌入app
热门文章
- 个人大数据征信查询浅谈与撸待现象
- Eclipse中如何把自己写的方法封装成jar包供其他项目使用
- vue中根据汉字生成拼音
- 区块链会计案例_会计中区块链的特征 区块链会计应用案例
- 软件泛指计算机运行,广义地讲,软件泛指计算机运行所需的各种数据、及与之相关的文档资料...
- 七夕第一波狗粮来啦!魏晨晒婚纱照,与妻子爱情长跑十年成眷属
- ssm校园拼车服务系统毕业设计源码211633
- 最新红旗linux系统,红旗Linux10系统下载
- torch的拼接函数_Pytorch中的torch.cat()函数
- 为什么要有无参构造方法,无参构造的运行原理