引子
根据Robert C.Martin在《敏捷软件开发-原则、模式与实践》一书的观点,一个基本满足敏捷开发的代码应该符合以下5个原则:
SRP 单一职责原则
就一个类而言,应该仅有一个引起它变化的原因。
OCP 开放一封闭原则
软件实体(类、模块、函数等)应该是可以扩展的,但是不可修改。
LSP Liskov替换原则
子类型必须能够替换掉它们的基类型。
ISP 接口隔离原则
不应该强迫客户依赖于它们不用的方法。接口属于客户,不属于它所在的类层次结构。
就一个类而言,应该仅有一个引起它变化的原因。
OCP 开放一封闭原则
软件实体(类、模块、函数等)应该是可以扩展的,但是不可修改。
LSP Liskov替换原则
子类型必须能够替换掉它们的基类型。
ISP 接口隔离原则
不应该强迫客户依赖于它们不用的方法。接口属于客户,不属于它所在的类层次结构。
DIP 依赖倒置原则
抽象不应该依赖于细节。细节应该依赖于抽象。
但在现实中,由于各个各样的原因,系统中总会有这样那样不符合这5个原则的地方。
抽象不应该依赖于细节。细节应该依赖于抽象。
但在现实中,由于各个各样的原因,系统中总会有这样那样不符合这5个原则的地方。
这样的代码维护起来就两个字: 累 乱。
一个理想的系统,代码层次应该是这样的:
较理想的代码层次和职责
层次 | 职责 | 允许的操作 | 不允许的操作 |
外部入口层(输入入边界) | 接收外部请求,封装成代码内部可用数据 | 读取各种外部输入资源,如http请求,文件等 | 直接调用基础服务 包括直接调用dao,mc,mq等 |
接口服务层 | 校验请求数据的格式合法性,并调度各个业务服务,串联推动业务服务 | 无特殊情况,不直接调用基础服务层 | |
业务服务层 | 进行一个和多个领域模型之间的业务的封装, |
缓存各种独立在db外的信息 可配合工具类实现领域对象的重新封装 |
|
领域服务层 | 提供单个领域的各种操作,如增删改查。 |
缓存各种基于db的列表信息 可配合工具类实现领域对象的重新封装 |
|
基础服务层 | 提供基础的存储和外部服务依赖的 | dao服务:可对应db行记录缓存领域对象 | dao服务无特殊情况不缓存 领域对象的列表 |
相关推荐
2. Spring Web Services:Spring Web Services模块提供了创建基于SOAP的Web服务的功能,与`spring-web.jar`结合可以方便地构建服务端和消费端。 3. Spring Security:用于Web应用的安全控制,它可以与`spring-web....
【标题】"cxf-spring 服务端and客户端"揭示了这个项目是关于Apache CXF框架与Spring框架的集成,用于构建服务端和客户端应用程序。Apache CXF是一个开源的Java框架,它允许开发者创建和消费Web服务,而Spring框架则...
在IT行业中,Web Service是一种基于XML的通信标准,允许不同系统之间进行互操作性交互。Spring Boot是一个流行的Java框架,用于简化Spring应用的创建和管理。本教程将讲解如何使用Spring Boot集成Apache CXF(一个...
【标题】中的“使用SpringCloud开发的学生作业管理系统服务端”表明该项目是一个基于SpringCloud框架构建的后端服务,专门用于管理学生作业。SpringCloud是Java生态中的一个微服务开发工具集,它提供了服务发现、...
- **获得源代码**:可以从 GitHub 或 Maven 仓库获取 Spring Security 的源代码。 #### 二、Spring Security 命名空间配置 ##### 2.1 命名空间的设计 Spring Security 提供了一个简洁的命名空间,用于简化配置...
本项目是基于Spring Boot、Spring、Spring MVC和MyBatis技术栈实现的Flutter微校园APP的服务端程序。这个服务端程序旨在为Flutter前端提供稳定、高效的数据接口,以支持校园生活的各种功能,如课程管理、成绩查询、...
Spring-WS 是一个基于 Java 的轻量级 Web Service 框架,专注于 SOAP 协议。这个框架使得开发者能够创建符合 W3C 标准的、契约优先的 Web Service 应用程序。在本篇文章中,我们将深入探讨如何使用 Spring-WS 实现 ...
本项目重点是利用CXF实现基于Spring的Web服务客户端和服务端程序,并且具有多数据源动态切换的功能。 首先,让我们详细讨论CXF框架。CXF是一个Java框架,它提供了一种灵活的方式来构建和部署Web服务。CXF支持WS-*...
本项目利用ibatis、spring、cxf和mysql这四个关键技术,搭建了一个名为myWebservice的服务端,旨在提供灵活的数据交互和强大的服务功能。以下是对这些技术及其在项目中应用的详细解释: 1. **iBatis**:iBatis是一...
Spring Boot基于Spring框架,旨在简化初始化和配置过程,让开发者更专注于业务逻辑。 3. **分布式RPC**:分布式RPC允许在不同的网络节点之间透明地调用方法,如同在本地一样。Hadoop的Hadoop RPC、Google的gRPC和...
毕业设计管理系统是一个典型的Java Web应用,它利用Spring MVC框架来构建服务端逻辑。Spring MVC是Spring框架的一个模块,专门用于处理Web应用程序的请求-响应模型。这个系统可能包含了用户管理、项目分配、进度跟踪...
6. **CxfSpringClient**:根据提供的文件名,这可能是一个示例项目或者代码,展示了如何在Spring环境中配置和使用CXF客户端。可能包含Spring配置文件、服务接口、客户端调用逻辑等组件。分析这个项目可以帮助理解...
【当当网服务端】是基于SSH框架构建的电商系统,SSH全称为Spring、Struts和Hibernate,这是一套在Java Web开发中广泛使用的开源框架组合。Spring提供了强大的依赖注入和面向切面编程功能,Struts则负责处理MVC模式中...
CXF提供了`wsdl2java`工具,可以基于Web服务的WSDL文件生成客户端代码。你可以使用Maven的CXF插件或者命令行工具来执行此操作。 生成客户端代码后,你可以在Spring Boot客户端应用中引入这些生成的类,并使用它们来...
点餐小程序服务端代码主要涉及的是餐饮行业的在线订餐系统,其核心是通过小程序作为前端交互界面,结合后端服务处理订单、管理菜单等业务逻辑。在这个项目中,服务端扮演着至关重要的角色,它是连接数据库与小程序...
总结来说,"Spring+CXF+MyBatis"的整合代码实现了基于Web服务的数据访问,Spring作为整体框架,管理组件间的依赖;CXF提供了Web服务接口,使得服务对外暴露;而MyBatis则负责底层的数据库操作。这种整合模式在实际...
这是一个基于Java的Android服务端项目,使用SpringBoot框架构建,主要功能是戒烟管理系统的毕业设计。SpringBoot是一个由Pivotal团队提供的开源框架,它旨在简化Spring应用程序的初始搭建以及开发过程。通过内置的...
Google Web Toolkit (GWT) 和 Spring 是两个在Java Web开发中广泛使用的框架。GWT 是一个用于构建富互联网应用程序(RIA)的开放源代码工具包,它允许开发者使用Java语言编写客户端代码,然后通过编译转换成优化的...
Spring MVC是Spring框架的一部分,它是一个轻量级的、基于组件的Web框架,能够有效地解耦应用程序的业务逻辑和呈现逻辑。通过使用DispatcherServlet作为前端控制器,Spring MVC能够调度请求并将其转发给相应的处理器...
标题中的“基于Java的Spring4GWT.zip”表明这是一个关于使用Java编程语言,结合Spring框架和GWT(Google Web Toolkit)技术的项目压缩包。这个项目可能是一个Web应用程序,利用了Spring的强大功能来管理和协调应用的...