引子
根据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服务无特殊情况不缓存 领域对象的列表 |
相关推荐
spring cloud 服务端代码,eurake服务可以发现和注册服务端服务。 spring cloud 服务端代码,eurake服务可以发现和注册服务端服务。还有后续代码
数据要从服务器端生成,并传递给客户端。 并未使用数据库、基于 Spring+SpringMVC 技术,功能并未完善,仅供参考!
springclound服务端eureka和springboot客户端注册简单demo。关于Cannot execute request on any known server的解决办法
spring_oauth客户端服务端demo代码
omen-1.1 自己基于netty开发的服务端,支持spring配置服务器启动模式:http,tcp,websocket等,并支持NIO和OIO方式,项目已应用于生产,可以通过jar形式加入其它项目,业务类实现业务service,启动不依赖于其他应用...
spring oauth2 服务端实现例子,eclipse工程(tomcat插件可直接运行)
利用maven搭建的spring-boot项目,集成mybatis,实现服务端接口开发。
英文版:The Definitive Guide to Spring Web Flow ...此外,书中还清楚地讲述了SpringWeb Flow 1和Spring Web Flow 2在设计和使用上的差异。 《Spring Web Flow权威指南》适合各层次Java Web开发人员阅读和使用。
在线教育平台服务端基于Spring Boot构建,采用Spring Cloud微服务框架。 持久层:MySQL、MongoDB、Redis、ElasticSearch 数据访问层:使用Spring Data JPA 、Mybatis、Spring Data Mongodb等 业务层:Spring IOC、...
spring mvc服务端表单验证实例 能跑起来看效果 lib齐全 希望对您的学习有帮助
基于OSGi和Spring开发Web应用的博文对应的代码
这是一个基于spring mina 的服务端整合框架
Spring Web Service是Spring社区基于Spring提供的一个关注于创建”文档驱动”的Web Service的模块, 它的主要目标是方便基于”契约优先”(Contract-First)的SOAP服务的开发. 好像没有多少人讨论, 大多数的话题都是...
SpringCloud系列Demo代码,每个子项目都是SpringCloud的一个知识点或者说技能点且都有对应的博客介绍,代码开箱即用适合新手学习或老司机复习。 SpringCloud系列Demo代码,每个子项目都是SpringCloud的一个知识点...
基于OSGi和Spring开发Web应用
spring + dubbo + zookeeper 服务端代码
Webservice入门教程_用CXF编写基于Spring的WebService示例代码
spring-web-4.0.0.RELEASE-sources.jar源码包下载适用于研究源码的同学
传统的Web页面流程图:例如Struts的Action和视图,从struts-config.xml文件的Action定义中不能清晰的看到页面流程(基于cocoon的…) Spring MVC提供了一个轻便的高层次的功能:表单控制器实现了一个与定义的页面流程。...
最近研究了一下spring webservice整合,由于第一次做这个,整合期间遇到了不少问题,在网上查找了好久也没找到完整实现的server和client的demo,有的问题折腾了我好几天,看到spring的官网里面有人提相同的问题,...