設計bean工廠介面
如何告訴他建立bean?
建立什麼bean?
bean工廠實現
畫完整uml類圖
編寫**
測試總結
1. ioc是什麼?
ioc:inversion of control 控制反轉,也稱依賴倒置反轉。
反**依賴物件的獲得權被反轉了,由自己建立,變為從ioc容器獲取,和自動注入。
2. 帶來什麼好處?
- **簡潔,不需要自己new很多類了。
- 面向介面程式設計,使用者與具體類解耦,易擴充套件、替換實現者。
- 可作為基礎模組,供支撐其他高階功能
3. 做什麼工作?
負責建立、管理類例項,向使用者提供例項。
4. 是否是工廠模式的例項?
是的。ioc容器負責建立bean例項,也稱為bean工廠。
1. ioc容器的工作?
- bean是什麼?
元件,就是類的例項物件。
- ioc容器應該具備什麼行為、功能?
負責建立、管理bean。他是乙個bean工廠,負責對外提供bean例項,getbean()方法。
- 這個getbean()方法是否需要引數?需要幾個引數?什麼型別的引數?
根據類的名稱獲取相應的bean是最簡單的,也符合簡單工廠設計,所以只用乙個string引數即可。
- getbean()方法返回值應該是什麼型別?
返回的bean例項可能是所有的型別,所以應該是返回object。
2.設計bean工廠介面
目前只需要提供乙個getbean()的方法。
如何告訴它建立bean?
建立什麼bean?
student stu =
newstudent()
;
工廠方法
public
class
studentfactory
}
靜態工廠方法
public
class
studentfactory
}
3. bean工廠建立bean時需要知道哪些資訊?
構造方法需要知道,類的全路徑名(無參構造方法)。
靜態工廠方法需要知道,工廠類名和方法名。
工廠方法需要知道,工廠bean名(可通過bean工廠獲取工廠bean)和方法名。
4. 單例還是多例?
兩種情況都有。
5. bean定義應該提供哪些方法?
- 獲取bean的類名 getbeanclass():class 有可能是bean的類名或工廠bean的類名
- 獲取工廠方法名 getfactorymethodname(): string
- 獲取工廠bean名 getfactorybeanname():string
- 是否單例等方法 getscope():string 、issingleton():boolean、isprototype():boolean
6. 物件交由ioc容器管理後生命週期還有什麼事情要做?
可能要對bean例項化後進行初始化方法、銷毀前進行的銷毀方法
故應定義getinitmethodname() 、getdestroymethodname.
5. beanfactory實現
- 要實現什麼功能?實現什麼介面?
實現bean工廠和bean定義註冊介面
- 建立的bean用什麼存放,以便獲取?
map- getbean()要做哪些事?
建立bean例項,進行初始化等方法。
- bean定義資訊用什麼存放?
map- bean定義是否可以重名,重名怎麼辦?
可以先簡單設計為不可重名,重名即丟擲異常。
- 擴充套件預設bean工廠
可以提前將單例bean初始化。
詳見附件完整專案。
專案完整**資源
- 測試無參構造器建立bean
public
- 測試靜態工廠方法建立bean
- 測試工廠方法建立bean
TensorFlow實戰(一)手寫數字識別
tensorflow實戰 第一章是基礎,沒什麼好看的,跳過出,第二章是說tensorflow和其他的模組,比如caffe等,caffe以前也說過,比較容易,但是配置比較麻煩 cpu的容易點,gpu比較麻煩 第三章 簡單說一下安裝吧,就行在命令列輸入 前提是你已經有python pip install...
一手寫不出大市場
丁乙乙 手寫板?就是那種給老人用的?在回答記者關於 你是否會購買手寫板 時,一位20來歲的小夥子脫口而出這句話。怎麼會呢?記者真是從來沒有聽到這樣的理論。怎麼不是?我每天網上聊天,雖然打的是全拼,但也蠻快的。有什麼必要再去用手寫?只有那些連拼音也掌握不了的老人才會去用呢!短短幾句話,雖然難免有失偏頗...
手寫spring IOC容器
基本思路 解析xml配置檔案 根據配置的生成相應的物件 將物件存入ioc容器 ioc容器實現 1.0 encoding utf 8 address class com.example.xmlsax reader.entity.address city value fuzhou user class ...