Spring關於IOC思想的簡要理解

ganlanA發表於2020-12-13


一、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檔案

<bean id = "test" class = "路徑名"></bean>

java檔案

class Factory{
	public static A getTest(){
		String classvalue = class屬性值;//xml解析, 由此看出路徑名變化只會改變classvalue的值,而不會引起原始碼的改變,體現出耦合度低。
		Class clazz = Class.forName(classvalue);//通過反射接收物件
		return (A)clazz.newInstance();
	}
}

總結

IOC即控制反轉,把物件的建立和呼叫交給Spring進行管理,降低了程式碼的耦合度。
IOC思想基於IOC容器完成,IOC容器底層就是物件工廠

相關文章