记录我开发鞋服行业供应链软件的历程<设计业务层>
2011-09-15 23:13
351 查看
出自:/article/5900411.html
有的人说,业务层就是一堆的Manager(或者叫service),为什么还要设计呢?前一句讲的没错,后面这一句就有点欠思考了.我自已总结了一下,如果做一个系统,Manager之间共性的东西还是很多的:
1):都需要写操作日志
2):都需要写操作消息,比如保存某个模块的时候,显示“保存成功”的信息给用户.
3):对于一些简单的模块,简单指的是这个模块只需要对一个表操作(为了方便,称为CRUD模块),比如说ERP信息里的,员工,单位等等。具有通常的功能有:增加,修改,删除,查找,打印等.
4):对于一些复杂的模块,复杂指的是主子表结构的模块(为了方便,称为CRUDLine模块),比如说ERP信息里的采购订单,销售订单,销售单等,具有通常的功能有:浏览,增加,修改,删除,增加明细,修改明细,删除明细等.
5):CRUD模块一般对应Hibernate的一个POJO
6):CRUDLine模块一般对应Hibernate的两个POJO
7):都需要传递给表示层,这次操作用哪个页面显示.
8):都有一个Dao对象.
9):如果要写浏览功能的伪代码是如下:
10):如果写增加保存功能的伪代码如下:
上面只是列举了部分共性的东西,碰到不同系统架构,不同的业务系统,共性的东西不同,共性出现的地点也不同,比如可能会出现在表示层.但只要去总结就可以很容易找的到。找到了共同点,我们就可以好好利用Java反射,再结合Spring,把那些共同点抽象出来,形成系统架构中的业务层。
【业务层结构】
BaseEngine->BaseCRUDEngine->CRUDOperatorImpl->CRUDLineOperatorImpl
BaseEngine完成的功能有
2:BaseCRUDEngine完成的功能有:
3:CRUDOperatorImpl
4:CRUDLineOperatorImpl
从上面可知,我们现在设计的业务层把很多基本的东西抽象出来了,除了让以后的业务层来的更简单外,还可以让每个程序员代码风格一致,阅读代码,维护更方便。如果有特殊的业务逻辑,可以通过重写来达到目的。如果再附上自动代码产生平台,整个系统的开发速度就很快了,而且bug很少.
附一个简单操作模块的Manager的代码:
有的人说,业务层就是一堆的Manager(或者叫service),为什么还要设计呢?前一句讲的没错,后面这一句就有点欠思考了.我自已总结了一下,如果做一个系统,Manager之间共性的东西还是很多的:
1):都需要写操作日志
2):都需要写操作消息,比如保存某个模块的时候,显示“保存成功”的信息给用户.
3):对于一些简单的模块,简单指的是这个模块只需要对一个表操作(为了方便,称为CRUD模块),比如说ERP信息里的,员工,单位等等。具有通常的功能有:增加,修改,删除,查找,打印等.
4):对于一些复杂的模块,复杂指的是主子表结构的模块(为了方便,称为CRUDLine模块),比如说ERP信息里的采购订单,销售订单,销售单等,具有通常的功能有:浏览,增加,修改,删除,增加明细,修改明细,删除明细等.
5):CRUD模块一般对应Hibernate的一个POJO
6):CRUDLine模块一般对应Hibernate的两个POJO
7):都需要传递给表示层,这次操作用哪个页面显示.
8):都有一个Dao对象.
9):如果要写浏览功能的伪代码是如下:
//写hql语句 |
String hql=”fromHibernate_POJO”; |
//如果存在过滤条件,加上过滤条件 |
if (存在:where){ |
hql=hql+where; |
} |
//得到实体的列表 |
List list=dao.list(hql,pageNumber,limit); |
//将实体列表传到页面上显示 |
request.setAttribute(“datas”,list); |
//new一个pojo对象 |
Object pojo= new HibernatePojo(); |
//将页面传回的值绑定到pojo |
bindEntity(pojo,form); |
//调用dao进行保存 |
dao.save(pojo); |
if (成功){ |
//写成功的操作日志 |
writeSuccessLog(); |
//写成功的提示信息 |
writeSuccessMessage(); |
} else { |
//写失败的操作日志 |
writeFailureLog(); |
//写失败的提示信息 |
writeFailureMessage(); |
} |
【业务层结构】
BaseEngine->BaseCRUDEngine->CRUDOperatorImpl->CRUDLineOperatorImpl
BaseEngine完成的功能有
writeSuccessLog:写成功的操作日志 |
writeSuccessMessage:写成功的提示信息 |
writeFailureLog:写失败的操作日志 |
writeFailureMessage:写失败的提示信息 |
setDao:设置Dao对象 |
forwardJsp:通知表示层返回Jsp |
forwardJson:通知表示层返回Json |
forwardExcel:通知表示层返回Excel |
forwardPdf:通知表示层返回Pdf |
getEntityClass:得到实体类(虚函数) |
getTableKeyField: 得到实体类的主键名(虚函数) |
getEntityId:取主键值 |
createEntity:生成一个实体对象 |
isUniques:判断当前主键对象是否唯一 |
list:列表功能 |
add:进入增加时调用的方法 |
addSave:增加保存时调用的方法 |
update:修改 |
updateSave:修改保存 |
view:浏览 |
find:查找 |
print:打印 |
addLine:增加明细 |
addSaveLine:增加保存明细 |
updateLine:修改明细 |
updateSaveLine:修改保存明细 |
deleteLine:删除 |
附一个简单操作模块的Manager的代码:
public class TbsunitManager extends CRUDOperatorImpl |
{ |
private static final long serialVersionUID |
public TbsunitManager() { |
} |
public Class |
return Tbsunit. class ; |
} |
public String |
return "tbsunitid" ; |
} |
} |
相关文章推荐
- 记录我开发鞋服行业供应链软件的历程<设计代码生成工具>
- 记录我开发鞋服行业供应链软件的历程<设计系统技术架构>
- 记录我开发鞋服行业供应链软件的历程<设计业务层>
- 记录我开发鞋服行业供应链软件的历程<设计表示层>
- 记录我开发鞋服行业供应链软件的历程<设计系统技术架构>
- 记录我开发鞋服行业供应链软件的历程<设计数据库层>
- 记录我开发鞋服行业供应链软件的历程<设计代码生成工具>
- 记录我开发鞋服行业供应链软件的历程<设计表示层>
- 记录我开发鞋服行业供应链软件的历程<组建自已的团队>
- 记录我开发鞋服行业供应链软件的历程<来到一个新公司>
- 记录我开发鞋服行业供应链软件的历程<我所了解的鞋服行业>
- 记录我开发鞋服行业供应链软件的历程<组建自已的团队>
- 【Qt编程】基于Qt的词典开发系列<六>--界面美化设计
- 【Qt编程】基于Qt的词典开发系列<一>--词典框架设计及成品展示
- <杂谈1002>HTML作为GUI前段,Java/NDK作为业务后端开发方式总结
- 【Qt编程】基于Qt的词典开发系列<二>--本地词典的设计
- 【Qt编程】基于Qt的词典开发系列<三>--开始菜单的设计
- iOS开发记录<1>
- Android游戏开发指南<一>背景地图
- <程序猿--艰难历程>之Apache Ant 初学入门一