反射 + 配置文件 实现IOC容器
IOC實現(xiàn):
IOC容器我們僅僅停留在知道上是不行的,我們要動手做印象對更深刻,那么我給大家看一個代碼,看看代碼中IOC容器的實現(xiàn)。
代碼實現(xiàn):
創(chuàng)建一個類庫:
解決方案的類庫建立:
創(chuàng)建一個實體類:User:
[csharp]?view plaincopyprint?
創(chuàng)建IUsers的接口:
[csharp]?view plaincopyprint?
創(chuàng)建一個實現(xiàn)IUsers接口的實現(xiàn)類:
[csharp]?view plaincopyprint?
創(chuàng)建測試類:
[csharp]?view plaincopyprint?
在控制臺程序中創(chuàng)建一個配置文件:
[csharp]?view plaincopyprint?
運行后,發(fā)現(xiàn)SpringHelper卻小引用。我們一般寫代碼中我們是這樣寫的:
[csharp]?view plaincopyprint?
這樣我們就可以從配置文件中將對象取出來,但是我們都不想在代碼中有多余的代碼,不能每一次new對象的時候,我們都要寫一遍這句話:IApplicationContext context = ConfigurationManager.GetSection("spring/context") as IApplicationContext;這樣就增加了我們維護代碼的成本,因此,我們將這句話封裝起來,封裝的代碼是這樣的:
創(chuàng)建一個類:SpringHelper:
[csharp]?view plaincopyprint?
以上的代碼我們就可以將每次讀取配置文件中的那句話去掉了,我們直接就可以寫這樣一句話就可以了:IUsers studentChangeBll = SpringHelper.GetObject<IUsers>("Users");
這里體現(xiàn)了封裝的重要性,先前我在做AOP的時候,我的師傅看到了類似這樣的代碼的時候,他就跟我討論過這個問題,我當(dāng)時懵懵懂懂,沒有進行下一步的行動,現(xiàn)在想想,問題出現(xiàn)在我根本沒有動手去做,或者知識沒有深入到那個層次,認識這個知識的方面沒有那么深。所有問題,都要動手去做才行。
總結(jié):
我們從上面的實踐到分析之后,我們發(fā)現(xiàn)其實我們看似是新的東西,其實我們已經(jīng)學(xué)習(xí)過了,就像IOC容器一樣,我們學(xué)習(xí)過了反射和配置文件,我們發(fā)現(xiàn)其實IOC容器不就是反射和配置文件來實現(xiàn)的嗎,反射和配置文件是我們在大話設(shè)計模式中就已經(jīng)學(xué)習(xí)到了的東西,這都不是新的東西。一個看似復(fù)雜的東西,都是有簡單的東西來組裝成的,我們知道這個,就不會對新的東西有畏懼感了。
總結(jié)
以上是生活随笔為你收集整理的反射 + 配置文件 实现IOC容器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三层架构及其优缺点
- 下一篇: Spring中IoC的入门实例