`
e3002
  • 浏览: 77774 次
社区版块
存档分类
最新评论

关于软件设计,解偶,测试

阅读更多

最近一直在琢磨以下几个问题:

1.web软件到底该分多少层好

2.如何降低层之间的耦合性

3.各层如何进行单元测试

我就以上3个问题说一下自己的理解

1.web软件到底该分多少层好?

常说的mvc,有3层,view,control,model,但具体的项目中的实现恐怕没有对应的那么好的,我的理解:

view(jsp)+actionservlet +action +service+dao+db(可能不对啊!)

view负责展示例如jsp

actionservlet 作为控制层

action我把它归于控制,因为他并不是先具体业务逻辑

service 业务逻辑层

dao 数据持久层

db 数据库

系统的核心在service,所以作为开发人员的关注点也应集中在service(业务逻辑层)。

2.如何降低层之间的耦合性?

从上面的层次来看主要是service和dao ,action和service,以service和dao的解偶为例来说

解偶的方式有如下(就目前所想到的)

 1.通过dao接口的方式 在service中通过调用接口达到解偶目的

2.IOC(控制反转),通过配置文件中配置dao(大的系统中如用此方式恐怕配置文件会很大)

3.可以利用设计模式 如工厂模式,当dao中有所改动,只需修改相应工厂方法即可

 

3.各层如何进行单元测试?

对与view的单元测试,恕本人愚钝目前还不知道

ationservlet和action中不含逻辑可以不进行单元测试(个人观点)

主要说一下service层的测试,测试该层的目的主要是看业务逻辑是否正确,所以一般不涉及到数据库的操作当然你说service中调用了dao中代码,涉及到了数据库操作,这是我们需要mock对象,测试工具可用easymock,接下来是测试dao ,在javaeye中看了些帖子,说测试dao'层主要是看发送的sq的正确性,其实这是独立的dao测试,见到大多数人建议针对dao采用集成测试,即结合真实数据库测试,我也赞同这种测试dao的方式,因为在集成测试中这样才使你的测试更有意义,看到的效果才更真实(拙见)

 

目前了解的不多,有点晕眩,记录下目前的理解,有待以后改进完善,希望看到的人不吝赐教!

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics