1. Spring启示录

news/2024/9/20 9:27:23

1. OCP 开闭原则

开闭原则是这样说的:在软件开发过程中应当对扩展开放,对修改关闭。也就是说,如果在进行功能扩展的时候,添加额外的类是没问题的,但因为功能扩展而修改之前运行正常的程序,这是忌讳的,不被允许的。因为一旦修改之前运行正常的程序,就会导致项目整体要进行全方位的重新测试。这是相当麻烦的过程。导致以上问题的主要原因是:代码和代码之间的耦合度太高。如下图所示:

image

可以很明显的看出,上层是依赖下层的。UserController依赖UserServiceImpl,而UserServiceImpl依赖UserDaoImplForMySQL,这样就会导致下面只要改动上面必然会受牵连(跟着也会改) ,所谓牵一发而动全身。这样也就同时违背了另一个开发原则:依赖倒置原则。

2. 依赖倒置原则 (DIP原则)

依赖倒置原则(Dependence Inversion Principle),简称DIP,主要倡导面向抽象编程,面向接口编程,不要面向具体编程,让上层不再依赖下层,下面改动了,上面的代码不会受到牵连。这样可以大大降低程序的耦合度,耦合度低了,扩展力就强了,同时代码复用性也会增强。(软件七大开发原则都是在为解耦合服务

像这种把对象的创建权交出去,把对象关系的管理权交出去,被称为控制反转。

3. 控制反转 IoC

控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计思想,可以用来降低代码之间的耦合度,符合依赖倒置原则。

控制反转的核心是:将对象的创建权交出去,将对象和对象之间关系的管理权交出去,由第三方容器来负责创建与维护

控制反转常见的实现方式:依赖注入(Dependency Injection,简称DI)

通常,依赖注入的实现又包括两种方式:

  • set方法注入
  • 构造方法注入

而Spring框架就是一个实现了IoC思想的框架。

IoC可以认为是一种全新的设计模式,但是理论和时间成熟相对较晚,并没有包含在GoF中。(GoF指的是23种设计模式)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/47533.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

2. Spring 概述

1. Spring 简介来自百度百科 Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。 从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 Spring最初…

OpenCL流程分析与示例

OpenCL流程分析与示例OpenCL示例 Vortex存储库的tests/OpenCL目录中有OpenCL测试程序。OpenCL程序分为主机代码和设备代码。[cc|cpp]和kernel.cl。 OpenCL通过在设备端并行执行内核来加快速度。来看看tests/opencl/sgemm中的代码作为一个具体的例子。注意,代码经过了轻微修改,…

node-js,npm安装-详细教程

一、npm是什么?npm 是 NodeJS 下的包管理器,vue-cli脚手架模板就是基于 node 下的 npm 来完成安装的。 相关介绍~webpack: 它的主要用途是通过CommonJS的语法把所有浏览器端需要发布的静态资源做相应的准备,比如资源的合并和打包。vue-cli:官方提供的一个脚手架,用于快速生…

大众点评商家爬取

对显示搜索结果的网址发送请求import requestsurl = https://www.dianping.com/search/keyword/150/0_%E6%84%8F%E9%9D%A2headers = {Cookie:baiduappugc_ab=ugcdetail%3AA%3A1; _lxsdk_cuid=18fee40b7a3c8-005f5aa16f3f6f-26001c51-144000-18fee40b7a37e; _lxsdk=18fee40b7a3c…

全网最适合入门的面向对象编程教程:01 面向对象编程的基本概念

本文主要介绍了面向对象编程的基本概念:类和对象、三大特性-继承封装多态、UML类图和对象图的基本概念以及教程所需要的开发环境。全网最适合入门的面向对象编程教程:01 面向对象编程的基本概念 以下,我们将简单介绍面向对象编程的基本概念和图形化描述方法,在后面的章节中…

Kubernetes 审计(Auditing)

Kubernetes 审计(Auditing),Kubernetes 审计简介,审计策略简介,引入审计,启用审计,记录审计阶段为:ResponseStarted,审计级别为Metadata,apiVersion为group: "" 的日志,只记录audit命名空间里的日志,只记录audit命名空间的pods操作日志,只记录audit命名…

Excel动态日历1

日历是我们生活中不可或缺的一部分,它能帮助我们规划时间、安排计划,以及记录生活中的点滴。而动态日历图则更是一种流行的视觉呈现方式,它可以直观地展示出每个日期的数据变化和趋势,让我们更好地理解时间和事件的关系。在这篇文章中,我们将向你介绍如何使用Excel制作一个…

ubuntu通过安装包安装Mongodb

下载官方的压缩包 下载地址 选择对应的版本,这里用 x64架构的ubuntu20.04作为演示 在服务器创建mongodb的自定义安装目录 例如安装在/opt/mongodb#创建安装目录mkdir -p /opt/mongodb#创建mongoDB数据目录mkdir -p /opt/mongodbDATA#创建mongodb日志目录mkdir -p /opt/mongodb…