资源预览内容
第1页 / 共26页
第2页 / 共26页
第3页 / 共26页
第4页 / 共26页
第5页 / 共26页
第6页 / 共26页
第7页 / 共26页
第8页 / 共26页
第9页 / 共26页
第10页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
层次系统 介绍与举例,袁国泉 2010.3.,层次系统简介,OSI 七层结构 TCP/IP 四层结构,典型结构1,每个层次是一个独立的组件。它的责任是:提供了由上层使用的服务,并且委派任务给下一层次。 需要防止较高层次直接越级访问较低层次。,层次N,层次N-1,层次1,客户,使用,分层系统优点和目标,层的重用 标准化支持 局部依赖特性 可替换性 层间低耦合、层内高内聚,设备管理信息系统总体功能,先分模块,再分层,系统概述,本系统采用JavaEE平台开发 集成Struts、Spring、Hibernate框架 后端采用Oracle数据库,用到的工具和平台,开发工具:MyEclipse 开发平台:JavaEE、JRE1.6; Struts1.3、Spring2、Hibernate3.1 版本控制工具:CVS Web服务器:Tomcat 数据库服务器:Oracle,JavaEE中典型的分层结构,表现层,控制层,持久层,业务层,数据库,前台页面展示,分发请求、 处理业务逻辑,提供数据库支持,系统架构,用到的技术,表现层,控制层,持久层,业务层,数据库,HTML、JSP、JS、CSS、Struts,Struts的Controller,Hibernate,Java、Spring,Oracle,包的概要介绍,表现层: WebRoot 控制层: com.puzhen.struts.action 业务层: com.puzhen.services 持久层: com.puzhen.dao com.puzhen.hibernate.artifacts,包的详细介绍,包的详细介绍(cont.),配置文件介绍(.xml文件),web.xml:Web应用的配置文件 struts-config.xml: Struts框架的配置文件 applicationContext.xml:Spring框架的配置文件 *.hbm.xml:Hibernate框架的配置文件,分层时要注意的地方,1、上层总是依赖其下层,依赖关系不跨层。 2、表现成除外,同一层之间方法不允许相互调用。这是实际开发中 一些开发者容易范的错误!如果真是同一层之间存在方法调用,需要 注意,这些调用都是一些上层不可见方法,比如一些工具方法等。 3、一切从服务层出发,从系统需要提供的功能进行分析,确定 Service接口中的方法。而不是从数据库的表出发,创建DAO,再创 Domain,然后Service,这实际上是对系统分层的误解。 4、系统最核心的设计就是将系统中的实体划分为领域模型。在此基 础上设计数据的DAO层,并将这些活动暴露给服务层,服务层的实现 依赖于领域活动。 5、每个接口的职责范围明确有界。,分层系统之利器,接口分离 控制反转 对象-关系映射,接口分离,接口分离原则ISP (Interface Segregation Principle) 采用多个与特定客户类有关的接口比采用一个通用的涵盖多个业务方法的接口要好。 如果你拥有一个针对多个客户的类,为每一个客户创建特定业务接口,然后使该客户类继承多个特定业务接口将比直接加载客户所需所有方法有效。 模块的替换性和修改性,Facade模式,GOF设计模式对Facade模式是这样描述: 为子系统中的一组接口提供一个统一接口。 Facade模式定义了一个更高层的接口,使子系 统更加容易使用。,Facade模式的要点: 1、从客户程序的角度看,Facade模式不仅简化了整个组件系统的接口,同时对于组件内部与外部客户程序来说,从某种程度上也达到了一种“解耦”的效果内部子系统的任何变化不会影响到Facade接口的变化。 2、Facade设计模式更注重从架构的层次去看整个系统,而不是单个类的层次。Facade很多时候更是一种架构设计模式。,控制反转,Spring框架 IoC(Inversion of Control) 又称“依赖注入”(Dependence Injection) Java反射机制,IOC的基本概念是:不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。容器负责将这些联系在一起。 其原理是基于OO设计原则的The Hollywood Principle:Dont call us, well call you(别找我,我会来找你的)。也就是说,所有的组件都是被动的(Passive),所有的组件初始化和调用都由容器负责。组件处在一个容器当中,由容器负责管理。,理解IoC,IoC解耦过程,USB接口和USB设备,拿掉IoC容器后的系统,电脑主机不会关心USB接口上连接的是什么外部设备,而且它确实也无需知道。 它的任务就是读取USB接口,挂接的外部设备只要符合USB接口标准即可。,ORM,对象-关系映射(Object/Relation Mapping),ORM:是通过使用描述对象和数据库之间映射的元数据,将java程序中的对象自动持久化到关系数据库中。本质上就是将数据从一种形式转换到另外一种形式。 典型ORM框架:Hibernate、iBatis,传统的三层架构,“基础结构层”:从实践的表现上来看,可能就是一些帮助类,比如SQLHelper,也可能是一些工具类,比如TextUtility。其被其它各层所访问。,基于分层的概念:表现层只能跟业务逻辑层打交道,而业务逻辑层在数据持久化方面的操作,则依赖于数据访问层。 表现层对数据访问层的内容一无所知。,领域驱动设计(DDD: Domain-Driven Design),领域驱动设计将软件系统分为四层: 基础结构层、领域层、应用层和表现层。 与传统的三层架构相比,数据访问层已经不在了,它被移到基础结构层了。,领域层:包含了业务所涉及的领域对象(实体、值对象)、领域服务以及它们之间的关系。这部分内容的具体表现形式就是领域模型(Domain Model)。领域驱动设计提倡富领域模型,即尽量将业务逻辑归属到领域对象上,实在无法归属的部分则以领域服务的形式进行定义。,Q/A,谢谢!,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号