文章目錄
- 一、IOC是什麼?
- 二、假設想要在B類中調用A類的add()方法
-
- 1.原始方法(耦合度高)
- 2.利用工廠模式(耦合度中)
- 3.IOC底層原理 (耦合度低)
- 總結
一、IOC是什麼?
控制反轉(Inversion of Control,縮寫為IoC),是面向對象程式設計中的一種設計原則,
主要是用來減低計算機代碼之間的耦合度。
接下來我們通過1個執行個體來進一步了解IOC思想。
二、假設想要在B類中調用A類的add()方法
1.原始方法(耦合度高)
代碼一處改,則處處改:
//A與B耦合度過高
class A{
void add(){
...
}
}
class B{
void execute(){
A test = new A();
test.add();
}
}
2.利用工廠模式(耦合度中)
代碼如下:
//A和B耦合度降低
class A{
void add(){
...
}
}
class B{
void execute(){
A test = Factory.getTest();
test.add();
}
}
class Factory{
public static A getTest(){
return new A();
}
}
3.IOC底層原理 (耦合度低)
//前面與2相同
class A{
void add(){
...
}
}
class B{
void execute(){
A test = Factory.getTest();
test.add();
}
}
在2的基礎上,對工廠進行改造。
先利用xml配置檔案,配置建立的對象。
再利用反射,進一步降低耦合度。
如下:
xml檔案
java檔案
class Factory{
public static A getTest(){
String classvalue = class屬性值;//xml解析, 由此看出路徑名變化隻會改變classvalue的值,而不會引起源代碼的改變,展現出耦合度低。
Class clazz = Class.forName(classvalue);//通過反射接收對象
return (A)clazz.newInstance();
}
}
總結
IOC和AOP是Spring的兩個核心思想。
IOC把業務層的問題從程式員抛給了使用者,也就是所謂的控制反轉(變成使用者來控制了)。
IOC利用set原理,面對不同的需求時,不用改程式,隻要對xml配置檔案做動作。