0530-3433334

网站建设 APP开发 小程序

知识

分享你我感悟

您当前位置>首页 >> 知识 >> 软件开发

软件开发 ocp开闭原则,依赖倒置原则DIP,控制反转loC

发表时间:2023-11-16 16:02:55

文章来源:炫佑科技

浏览次数:163

菏泽炫佑科技

软件开发 ocp开闭原则,依赖倒置原则DIP,控制反转loC

“框架是什么?

1.它是Rod创建的开源框架。 它的创建是为了解决企业应用程序开发的复杂性。

2.它是一个轻量级的控制反转(IoC)和面向切面(AOP)容器框架。

3.它*初的出现是为了解决EJB设计臃肿、测试困难的问题。

4、为简化开发而生,让程序员尽可能只关注核心业务的实现而不再关注非业务逻辑代码(事务控制、安全日志等)。

5.从简单性、可测试性和解耦性的角度来看,任何Java应用程序都可以从中受益。 ”

接下来我们将从为什么引入框架、OCP开闭原理、依赖反转原理DIP、控制反转loC、框架核心特性研究以及相关总结六个方面来分享我们的学习成果。

为什么要引入框架?

该框架在提高程序可扩展性的同时软件开发,可以解决代码之间过度耦合的问题,增强代码的复用性,提高运行效率。

OCP开闭原理

对于传统项目,考虑一个业务场景,我们需要连接MySQL数据库来查询用户信息等操作。 我们可以写一段这样的代码:

可以看出主要目的是连接MySQL数据库进行操作。 如果更改为数据库,则需要提供另一个数据库,如下:

显然,上面的操作是扩展功能,添加一个新的类来应对数据库的变化,而这里的变化会引起连锁反应,类的内置对象会被重新初始化:

这违反了开闭原则OCP(Open)。

开放封闭原则是这样说的:在软件开发过程中,应该对扩展开放,对修改封闭。 也就是说,扩展功能的时候添加额外的类是可以的,但是因为功能扩展而修改一个之前运行正常的程序是大忌,是不允许的。 因为一旦修改了之前运行正常的程序,整个项目就需要从各个方面重新进行测试。 这是一个相当麻烦的过程。

出现上述问题的主要原因是代码与代码之间的耦合度太高。

依赖倒置原理DIP

(DIP),简称DIP,主要提倡抽象编程、接口编程,而不是具体编程。 这样可以大大降低程序的耦合度。 当耦合度较低时,扩展性会更强,代码的复用性也会增强。

面向接口的编程代码应该如何实现? 请看下面的图片:

我们不需要在代码层面实现新对象的操作。 但现在出现两个问题:

1:谁负责对象创建?

二:谁负责将创建的对象赋值给这个属性?

如果解决了以上两个核心问题软件开发 ocp开闭原则,依赖倒置原则DIP,控制反转loC,就可以同时实现OCP的开闭原则和依赖倒置原则。 答案是:框架可以做到。 可以创建新的对象,也可以创建新的对象,还可以创建新的dao对象与对象之间的关系(生成关系本质上就是给属性赋值)。

显然,该方法交出了对象的创建/管理权,不再使用硬编码。 同时,交出了对象关系的管理权。

这种对象的创建权和对象关系的管理权的交接称为控制反转。

控制反转 IoC

控制反转(of)是面向对象编程中的一种设计思想,可以用来减少代码之间的耦合,符合依赖倒置的原则。

控制反转的核心是交出对象的创建权,交出对象的管理权以及对象之间的关系,让第三方容器负责创建和维护。

控制反转的常见实现方式:依赖注入(DI,简称DI)。 通常,依赖注入有两种实现方式:set方法注入和构造方法注入。

框架是实现IoC思想的框架。

框架核心特征研究

集成日志框架

从现在开始,我们可以启用日志框架来进行日志记录。

**步:在pom.xml文件中引入依赖;

步骤2:提供类根路径下的.xml配置文件(文件名固定为:.xml,且该文件必须放在类根路径下);

第三步:日志框架就可以启动使用了;

国际奥委会的实施

IoC 控制反转

控制反转是为了降低程序耦合,提高程序可扩展性,实现OCP原则,实现DIP原则。 控制反转思想的实现需要DI():依赖注入。

前面提到过依赖注入有两种方法:集合注入和构造函数注入。 由于集合注入的应用比较广泛,这里我们就来讲解一下集合注入的实现。

设置注入

设置注入要求属性必须向外界提供设置方法。

对象内置属性:

这时需要在.xml文件中进行bean的配置:

注意:要初始化对象中的内置属性,您需要使用标签。 name为设置的方法对应的方法名。 删除set关键字后,**个字母变成小写。 例如:()方法对应的name属性是; ref是xml中对应的属性。 文件中声明的 id。

IoC注解开发

框架会自动为我们创建对象。 前提是xml配置文件中配置了id和class,还需要标签。 基于注解的开发可以解决上述问题,解决大量代码重复的问题,提高效率。

炫佑科技专注互联网开发小程序开发-app开发-软件开发-网站制作等

相关案例查看更多