国产精品夜色视频一级区_hh99m福利毛片_国产一区二区成人久久免费影院_伊人久久大香线蕉综合影院75_国产精品久久果冻传媒

您的位置:首頁 >聚焦 >

從零手寫Spring(二):實(shí)例化Bean

2023-02-04 20:18:17    來源:程序員客棧

前面我們已經(jīng)實(shí)現(xiàn)了一個(gè)最簡(jiǎn)單的容器,那么接下來我們將進(jìn)一步升級(jí)下。

設(shè)計(jì)

使用我們框架的人我們稱之為客戶端,我們框架要做的就是讓客戶端少做一些工作,然而之前的設(shè)計(jì)是讓客戶端來創(chuàng)建對(duì)象再交給容器,所以為了減輕客戶端的負(fù)擔(dān),我們要讓容器來為客戶端創(chuàng)建對(duì)象。這時(shí)我們只要告訴容器,我們要的是什么類型的對(duì)象,容器便會(huì)幫助客戶端創(chuàng)建這個(gè)對(duì)象。


(資料圖)

于是我們有了如下設(shè)計(jì):

1、創(chuàng)建一個(gè)新的對(duì)象用于包裝要?jiǎng)?chuàng)建的類的類型

2、在客戶端使用對(duì)象時(shí),容器去實(shí)例化對(duì)象

實(shí)現(xiàn)BeanDefinition 定義

將實(shí)例化交給容器做,其實(shí)可以將上節(jié)中 beanMap 中的值由 Object改為Class即可,但是為了以后的可擴(kuò)展性,這里將Class包裝成一個(gè)新的BeanDefinition類。比如以后可以在這個(gè)類中標(biāo)記 beanClass 是否單例、是否懶加載、注入的方式等信息。

BeanFactory 定義

BeanFactory 就是上節(jié)中的 SpringContainer,為什么要改為BeanFactory 呢?

原因是:這個(gè)創(chuàng)建對(duì)象實(shí)例的過程使用了簡(jiǎn)單工廠模式。

簡(jiǎn)單工廠模式的實(shí)質(zhì)是由一個(gè)工廠類根據(jù)傳入的參數(shù),動(dòng)態(tài)決定應(yīng)該創(chuàng)建哪一個(gè)產(chǎn)品類。

工廠模式的目的:

1、解耦,將對(duì)象的使用和創(chuàng)建分開,解決對(duì)象間的依賴

2、隱藏復(fù)雜對(duì)象的創(chuàng)建過程,使用者只需要知道生產(chǎn)的接口即可

測(cè)試

對(duì)比和上一節(jié)的區(qū)別,我們這里并沒有自己通過 new關(guān)鍵詞來創(chuàng)建對(duì)象,卻可以從容器中拿到對(duì)象使用。

往期查看:

手?jǐn)]Spring(一):創(chuàng)建簡(jiǎn)單容器

關(guān)鍵詞: 創(chuàng)建對(duì)象 工廠模式 一個(gè)新的

相關(guān)閱讀