设计模式系列设计模式系列
系列一系列一 —— 数据库常用模式数据库常用模式
最近在研究架构的时候,一直有一个问题围绕着我,就是这些架构虽然好,但并不是有了好的架构软件开发质量就会提高,软
件就会美观更贴近艺术。我感觉,要想开发出好的软件,架构、在架构之中层(我喜欢叫容器,我感觉先简单理解成package
也可以)内部设计以及相关通用模块的积累都是软件开发重中之重,对于一个软件设计来讲,三个方面缺一不可,因为三个方
面是相辅相成。我开的这个系列就是想简单说说我在相关设计上的一些思路,当然还希望高人路过时多多指点,让小弟多多学
习,这里先谢过了。
我记得在前面的一篇文章中,我曾经写过,当时要给MVC中的M层设计一个架构。本篇文章主要是针对软件开发中的数据库
层的设计进行的思考。文章在有些思想上和前面的文章有些许相同,不过更正和重新设计了一下新的思路,下面的说明中我将
尽量使用UML图来进行说明,相信应该比看代码更清楚,而且写代码的话内容就太多了。
首先我明确一下自己的设计思路和设计目的:
一、希望上层直接使用对象数据。
二、下层和hibernate或jdbc能兼容。
首先我来秀一下主要思路的设计图:
上图中我们看到,整个软件项目是在一个com包中,里面主要是我们这次将的数据库层设计即DataBaseTier包。其结构已经一
目了然了,我们以Hibernate为例,三个包的依赖关系为:EntityClass依赖EntityClassManagement,EntityClassManagement
依赖HibernateManagement包。三个包我们都可以对该包进行“自测管理”,“信息监控”、“出入口统一化”等机制设置(“自测管
理”,“信息监控”、“出入口统一化”等机制设置等都是软件设计的基本功,但不是本篇文章的重点)。这样做在QA上、入后维
护上、代码美观方面都有良好的帮助。
我进一步说明,EntityClass包主要是放关系数据库中表的实体类,其内部结构如下:
整个包中有一个抽象的超类EntityClass,包的内部分为几个小包,分包是依据数据架构中主题域的设计而定的。多少个主题域
为多少个包,每个主题域又都有一个超类SubjectEntityName继承EntityClass类,每个主题域中的每一个类对应着主题域中的
一个实体对象。上述说的有一点点抽象,我给大家一个实现,看看就明白了。