文章目录
1、什么是 “依赖注入”和“控制反转”?为什么有人使用?
控制反转(IOC) 是 Spring 框架的核心思想,将程序的创建权有程序内转移到程序外面,交由spring管理。
依赖注入:确立 spring bean 与bean 之间的关系。
2、抽象类是什么?它与接口有什么区别?你为什么要使用抽象类?
a. 接口用于规范,抽象类用于共性。
b. 声明方法的存在而不去实现它的类被叫抽象类。
c. 接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。
3、构造器注入 和 setter 依赖注入,哪种方式更好?
每种方式都有它的缺点和优点。构造器注入保证所有的注入都被初始化,但是 setter 注入提供更好的灵活性来设置可选依赖。如果使用 XML来描述依赖,Setter 注入的可读写会更强。经验法则是强制依赖使用构造器注入,可选依赖使用setter注入。
4、依赖注入和工厂模式之间有什么不同?
虽然两种模式都是将对象的创建从应用的逻辑中分离,但是依赖注入比工程模式更清晰。通过依赖注入,你的类就是 POJO,它只知道依赖而不关心它们怎么获取。使用工厂模式,你的类需要通过工厂来获取依赖。因此,使用 DI 会比使用工厂模式更容易测试。
5、适配器模式和装饰模式有什么区别?
虽然适配器模式和装饰模式的结构类似,但是每种模式的出现意图不同。适配器模式被用于桥接两个解耦,而装饰模式的目的是在不修改类的情况下给类新增加新的功能。