单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,首页,主讲人:,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,第,3,章,Spring,与松耦合的软件系统,第3章 Spring与松耦合的软件系统,1,学习内容,J2EE,的分层设计,紧耦合软件系统所带来的危害,Spring,如何构建松耦合的软件系统,学习内容J2EE的分层设计,2,J2EE,的分层设计,-,四层架构,J2EE的分层设计-四层架构,3,紧耦合软件系统所带来的危害,不要假定用户需求是不变的,,拥抱变化,,只有肯定用户需求变化是永恒的这样原则,我们设计的软件系统才能满足用户不断变化需求。,这就要求我们的软件系统应该具有很好的可扩展性和可复用性,那么我们的手段是什么呢?这就是要降低层与层的耦合度,即松耦合。,紧耦合软件系统所带来的危害 不要假定用户需求是不变的,,4,紧耦合的设计情况?,紧耦合的设计情况?,5,Spring与松耦合的软件系统课件,6,Spring与松耦合的软件系统课件,7,Spring与松耦合的软件系统课件,8,由于层与层之间没有设计接口,而且层与层的依赖关系采用,new,方式等问题,当用户需求变更了就会引发,“,牵一发而动全身,”,可怕情形。假如我们现在持久层,DAO,不使用,JDBC,技术而换成使用,HibernateORM,框架,添加一个,DAO,类,即,DictionaryDAOHibernateImp,,那么情况是什么样子的呢?类图如图,3.2,所示。,由于层与层之间没有设计接口,而且层与层的依赖关系采用new方,9,Spring与松耦合的软件系统课件,10,由于持久层的变化,导致了依赖于它的服务层和表示层变化,实际上我们所有的层都变化了。,清单,3.4,是为了使用,Hibernate,实现添加的一个持久层实现类,目前我们也没有连接数据库,我们暂时把返回的值(,Hello World,)写死了。我们会在以后连接数据库,find,的返回值从数据库查询处理的。,由于持久层的变化,导致了依赖于它的服务层和表示层变化,实际上,11,Spring与松耦合的软件系统课件,12,Spring与松耦合的软件系统课件,13,Spring与松耦合的软件系统课件,14,小结,综上所述,上面的小例子我们看到,我们修改了数据持久层,结果导致了所有的层的变化,出现了,“,牵一发而动全身,”,可怕局面。这就是紧耦合的系统。,紧耦合系统给我们的危害是巨大的,任何一点小的修改可能都是灾难的,紧耦合系统给缺少可扩展性和可复用性。不能满足用户不断变化的需求。,导致紧耦合原因:,系统没有分层;,层与层之间没有设计接口,上层调用者要关心下层实现;,层与层之间调用还是采用传统,new,的方式。,小结综上所述,上面的小例子我们看到,我们修改了数据持久层,结,15,Spring,如何构建松耦合的软件系统,紧耦合给我们软件系统带来危害。,构建松耦合的软件系统是我们的必然的选择。,分层设计、并通过,Spring,解决如下问题:,层与层之间没有设计接口,层与层之间调用采用传统,new,的方式,Spring如何构建松耦合的软件系统紧耦合给我们软件系统带来,16,Spring与松耦合的软件系统课件,17,Spring与松耦合的软件系统课件,18,Spring与松耦合的软件系统课件,19,Spring与松耦合的软件系统课件,20,Spring与松耦合的软件系统课件,21,上面例子就是我们使用了,Sping,,由于用户需求的变化持久层的,DAO,由原来使用,JDBC,实现换成使用,Hibernate,实现。,我们只需要添加一个,DictionaryDAOHibernateImp,实现类,并修改配置文件就可以了,别的不需要任何的修改。,上面例子就是我们使用了Sping,由于用户需求的变化持久层的,22,Spring与松耦合的软件系统课件,23,Spring与松耦合的软件系统课件,24,总结,综上所述,使用了,Spring,构建的松耦合系统给我们带来的好处。它使我们在用户需求变更的情况下只需要修改少量代码就可以满足用户需求。这个例子很简单,当然谈不上是一个系统,但是,Spring,构建松耦合的原理上讲跟一个企业级应用系统是一样的。,总结综上所述,使用了Spring构建的松耦合系统给我们带来的,25,再看四层架构,再看四层架构,26,