我的设计思路,大家看看! ( 积分: 50 )

  • 主题发起人 主题发起人
  • 开始时间 开始时间

Unregistered / Unconfirmed
GUEST, unregistred user!
我打算下一个系统这么设计,
有这样几个层次:界面层,业务逻辑层,数据库交互层.
业务逻辑层是按领域模型构建,数据库交互用表入口模式,
数据库交互层中我会对每个数据库表封装一个类,当然不一定是只有表,也可能有视图.在每个类中包含关于该表的所有方法,包括查询,汇总,增加,删除,修改等等.
在业务逻辑层中按领域模型的方式建模领域逻辑,当需要与数据库交互时,它会调用数据库交互层中相应的表数据入口中的方法!
但是我不会像hibernate那样完全的和数据库脱离,我的业务逻辑层中可能还会调用数据库交互层中的一个汇总方法,而这个方法可能会调用数据库的一个存储过程!
这样有什么优缺点?
 
我打算下一个系统这么设计,
有这样几个层次:界面层,业务逻辑层,数据库交互层.
业务逻辑层是按领域模型构建,数据库交互用表入口模式,
数据库交互层中我会对每个数据库表封装一个类,当然不一定是只有表,也可能有视图.在每个类中包含关于该表的所有方法,包括查询,汇总,增加,删除,修改等等.
在业务逻辑层中按领域模型的方式建模领域逻辑,当需要与数据库交互时,它会调用数据库交互层中相应的表数据入口中的方法!
但是我不会像hibernate那样完全的和数据库脱离,我的业务逻辑层中可能还会调用数据库交互层中的一个汇总方法,而这个方法可能会调用数据库的一个存储过程!
这样有什么优缺点?
 
既然你的业务逻辑层只是调用数据库交互层的方法,而不是直接调用存储过程,那已经是完全分离了。
 
大多这么设计的
业务层和持久层 以及 界面层和业务层都应该通过接口通讯
还有 业务层和界面层直接最好还加一个外观层 这样更清楚一点
 
关于你的数据交互层我有一些看法,首先数据库中的表之间的关系也放着业务逻辑,例如。如果数据库的设计用到了高范式,表之间的删除和插入就要考虑表之间的关系。这样做并不灵活,数据库的表我认为没有必要封装成一个类。业务逻辑中可以把对于数据库操作的SQL语句封装成一个类。
业务逻辑和数据库的交互通过SQL语名来通讯
 
业务逻辑层尽量不直接操作数据库,尽量通过数据库交互层。这样有利于数据处理的逻辑性。
界面层,业务逻辑层之间最好建个通信层,这样有利于开发网络版。
界面层->通信层->业务逻辑层有利于网络维护与查错。
界面层:负责数据的表现与采集。
通信层:负责数据的汇流与分发。
业务逻辑层:负责规则运算与数据整合。
数据库交互层:负责数据的保存与读取。
 
楼上说的很有道理,业务逻辑层尽量不直接操作数据库!
 
前几天刚写好了一个类似的框架,
楼主有没有兴趣交流一下?
yananay@126.com
 
楼上的朋友:
你可以加入QQ群3421086一起讨论架构设计!
 
都这么强呀。
 
三层方式,现在几乎都是惯例,没有什么可以多讨论的.
关键在于领域模型怎么组织,这才是见功力的地方。
 
实践出真知
 
来自:tuti, 时间:2005-1-27 17:54:02, ID:2977313
三层方式,现在几乎都是惯例,没有什么可以多讨论的.
关键在于领域模型怎么组织,这才是见功力的地方。
--------------------------------
说的太对了.
 
来自:hippotek, 时间:2005-2-27 19:08:44, ID:2999138
来自:tuti, 时间:2005-1-27 17:54:02, ID:2977313
三层方式,现在几乎都是惯例,没有什么可以多讨论的.
关键在于领域模型怎么组织,这才是见功力的地方。
--------------------------------
说的太对了.
 
TO 楼主
您好,借你贴子用一下,刚注册.不能开贴.
关于QQ 发送信息的
为什么每篇同类的文章都说 'RICHEDIT'是发送文字的窗口,用SPY++查了总共有两个
'RICHEDIT',一个在'AfxWnd42'下.但两个都试了,没用.可能以前版本的可以,我用的这个是QQ2004 II
不行,试了一整天了.不能注入文字,但'RichEdit20A'(已发送的)这个却能在里面加字.
现求教,那个才是真正的发送文字的窗口。(200分,可商量)

我是这样写的:
WI:= 0;
WI := FindWindowEx(0,WI, '#32770',szText);
WI:= FindWindowEx(WI,0, '#32770','');
HWindow:= FindWindowEx(WI,0,'AfxWnd42',NIL);
HWindow := FindWindowEx(HWindow,0,'RICHEDIT',NIL);
SendMessage(HWindow, WM_SETTEXT, 256,integer(EDIT1.TEXT));

 
怎么[red]刘麻子 1[/red] 也出来了。[:)]
 
abookdog,说得有道理。不过有点补充一下,具体分多少层还是需要结合项目的大小。我的观点,杀鸡尽量不要用牛刀。
 
搂主的涉及一看就有问题。
 
后退
顶部