面向对象编程中的一些重要思想 :

1.在软件工程中,之所以出现了这么多的概念,和一些复杂的技术,目的就是为了写出可维护的代码

2.软件工程中的OCP原则--->开闭原则:Open Close Principle 开闭原则

      开闭原则讲究的是对扩展敞开,对修改关闭。意思就是:我们已经开发完毕的代码,尽可能的不要在原文件中进行程序的修改,因为,如果修改了源代码,可能会引出一些不必要的错误和麻烦。

      那么如果我们想要实现程序的开闭原则,以java语言为例,前提就是面向抽象编程,在java中,面向抽象编程的方法主要通过interface  抽象类 来实现,如果我们想要在程序中制定一些规范,或者我们想要统一对某个方法的调用,那么我们可以使用interface。如果我们想要提取某些公共的方法,以供其他类使用,那么我们可以定义一个抽象类,抽象类的内部包含这些方法,将这个抽象类作为基类,让其它类可以继承当前类。

单单依靠interface 和 抽象类,只能达到方法的统一调用,以及代码复用的目的,却不能保证对象实例化的统一。

3.我们知道,使用java语言设计的系统,是由一个个的Class类组成的,之所以系统能够工作,是因为类与类的实例化对象之间存在着一定的联系,所以如果在Class A 中,需要Class B 的实例化对象。那么我们就需要在Class A 中注入 Class B 的实例化对象。一旦业务发生改变,Class A 现在依赖Class C , 不再依赖Class B , 那么我们还需要重新New 一个 Class C 的实例。那么这时我们就会被迫修改原代码,导致我们违反了OCP原则。就不能保持代码的稳定性。由此我们可以得出一个结论:如果一段代码需要保持稳定,那么在这段代码中,就尽可能的不要出现New 这个关键字。只有这样,才能逐步实现开闭原则。

那么上面这个结论的本质就是-->如果一段代码想要保持稳定,那么他就不能负责对象的实例化工作,但是对象的实例化在系统中是不可避免的,我们只能把实例化代码的工作归到单独的一个模块去做。总该有一个角色来完成这个工作,这个角色,就可以使用工厂设计模式,或者 IOC容器 来充当。因为无论是工厂模式,还是IOC容器,都可以解决对象的实例化问题。

4.工厂模式的理解:工厂模式的作用是为了分离对象的实例化

工厂设计模式分为 简单工厂抽象工厂 ,那么简单工厂它是对实例化对象的抽象,它所能创建的所有实例化对象,都需要 implements 同一个接口。抽象工厂它是对工厂本身的抽象,在所有的具体的工厂的上层,会存在一个顶级的工厂接口,所有的具体工厂都需要 implements 这个顶级接口。

在工厂模式的内部,我们可以使用反射机制,来实例化对象,作为工厂的使用者来说,我们不需要关心工厂内部的具体实现,需要什么对象,只需要给工厂一个指令即可。

5.对Spring中的IOC容器的理解:

IOC:Inversion of Controller 控制反转,虽然工厂设计模式与IOC都可以实现对 对象实例化的隔离,但是工厂模式,终究还是需要开发人员发出指令,我需要用什么实例对象,你就给我返回什么实例对象,这种控制权还是掌握在开发人员的手中。但是IOC容器它实现的控制的反转,本质就是-->我们开发人员只需要开发一个个的业务类,至于类与类之间应该如何依赖,他们之间的关系应该如何维护,这个不需要我们开发人员关心,交给业务方。就像我们在代码中使用@Autowired实现自动注入一样,我们注入的只是一个interface,至于它到底会返回什么样的实例化对象,由具体的业务需求来决定。就像搭积木一样,一开始需要开发人员自己造积木,然后自己搭建积木。但是有了IOC容器以后,我们的开发人员只需要造出一个个的积木即可,至于这个积木怎么搭建,由具体的业务本身来决定。这种对实例化对象注入的控制权,由开发人员---->转换到IOC容器,这个转换的过程,才是体现IOC容器控制反转的真正奥义。

DI:Dependency Injection 依赖注入,有人说依赖注入和IOC是同一个意思,只是叫法不同而已,但是我认为,IOC是一种设计控制反转的思想,它并不是Spring的专利,但是Spring通过DI这种方式将它具体的实现了,所以我认为,DI是IOC在Spring中的具体实现。它可以将对象自动的注入到需要的地方。实现依赖注入的方式有三种:(1)构造方法注入(2)Setter注入(3)属性注入

DIP:Dependency Injection Principle 依赖倒置原则,它的核心就是要依赖抽象编程。

(1)高层模块不应该依赖顶层模块,两者都应该依赖抽象。抽象代表高层,具体实现代表底层。(2)抽象不应该依赖细节(3)细节应该依赖抽象

6.IOC容器的基本实现原理:IOC容器中,使用到的最基本的技术就是:工厂模式+反射技术,但是,工厂模式+反射 并不等于IOC,因为它没有体现出 控制反转 这个特性。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值