<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 640字,需瀏覽 2分鐘

           ·

          2023-02-04 19:07

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

          設(shè)計(jì)

          使用我們框架的人我們稱之為客戶端,我們框架要做的就是讓客戶端少做一些工作,然而之前的設(shè)計(jì)是讓客戶端來(lái)創(chuàng)建對(duì)象再交給容器,所以為了減輕客戶端的負(fù)擔(dān),我們要讓容器來(lái)為客戶端創(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í)例的過(guò)程使用了簡(jiǎn)單工廠模式。

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

          工廠模式的目的:

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

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

          測(cè)試

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

          往期查看:

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


          瀏覽 43
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  苍井さくら在线一区二区 | 国产日产亚洲精品 | 中文字幕第九页 | 亚洲成人免费网站 | 国产无码免费高清 |