国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Spring 核心與設(shè)計(jì)思想

這篇具有很好參考價(jià)值的文章主要介紹了Spring 核心與設(shè)計(jì)思想。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

??作者:銀河罐頭
??系列專欄:JavaEE

??“種一棵樹最好的時(shí)間是十年前,其次是現(xiàn)在”

Spring 是什么?

通常所說的 Spring 指的是 Spring Framework(Spring 框架)。

Spring 是包含多種工具方法的 IoC容器。

什么是 IoC?

IoC(Inversion of Control): 控制反轉(zhuǎn)

"控制反轉(zhuǎn)"又是什么意思?

下面以一個程序來舉例。

假如我們現(xiàn)在要寫一個構(gòu)建 Car 的程序。

實(shí)現(xiàn)思路是 : Car(車) -> Framework(框架) -> Bottom(底盤) -> Tire(輪胎) -> Size(輪胎尺寸)

傳統(tǒng)程序開發(fā)

// Car 類
public class Car {
    private Framework framework;
    public Car(){
        framework = new Framework();
    }
    public void init(){
        System.out.println("do car");
        framework.init();
    }

    public static void main(String[] args) {
        Car car = new Car();
        car.init();
    }
}
// Framework 類
public class Framework {
    private Bottom bottom;
    public Framework(){
        bottom = new Bottom();
    }
    public void init(){
        System.out.println("do framework");
        bottom.init();
    }
}
// Bottom 類
public class Bottom {
    private Tire tire;
    public Bottom(){
        tire = new Tire();
    }
    public void init(){
        System.out.println("do bottom");
        tire.init();
    }
}
// Tire 類
public class Tire {
    private int size = 17;
    public void init(){
        System.out.println("do tire");
        System.out.println("size = " + size);
    }
}

可以發(fā)現(xiàn)上述代碼中 size 是寫死的,如果 我想size = 另一個值,就需要改動上述代碼。

// Car 類
public class Car {
    private Framework framework;
    public Car(int size){
        framework = new Framework(size);
    }
    public void init(){
        System.out.println("do car");
        framework.init();
    }

    public static void main(String[] args) {
        Car car = new Car(40);
        car.init();
    }
}
// Framework 類
public class Framework {
    private Bottom bottom;
    public Framework(int size){
        bottom = new Bottom(size);
    }
    public void init(){
        System.out.println("do framework");
        bottom.init();
    }
}
// Bottom 類
public class Bottom {
    private Tire tire;
    public Bottom(int size){
        tire = new Tire(size);
    }
    public void init(){
        System.out.println("do bottom");
        tire.init();
    }
}
// Tire 類
public class Tire {
    private int size = 17;
    public Tire(int size){
        this.size = size;
    }
    public void init(){
        System.out.println("do tire");
        System.out.println("size = " + size);
    }
}

可以看出,當(dāng)最底層的代碼改了之后,從下到上整個調(diào)用鏈的代碼都要改動,這些類彼此之間的耦合程度是非常高的。

  • 如何解決上述問題?

目前是在每個類中自己創(chuàng)建下級類,如果對下級類的參數(shù)進(jìn)行修改,那么整個類也得跟著改。那我現(xiàn)在就不在這個類里面創(chuàng)建下級類了,我交給別人去創(chuàng)建,需要時(shí)傳遞(注入)就可以了。這樣就完成了程序的"解耦"。

控制反轉(zhuǎn)式程序開發(fā)

// Car 類
public class Car {
    private Framework framework;
    public Car(Framework framework){
        this.framework = framework;
    }
    public void init(){
        System.out.println("do car");
        framework.init();
    }
}
// Framework 類
public class Framework {
    private Bottom bottom;
    public Framework(Bottom bottom){
        this.bottom = bottom;
    }
    public void init(){
        System.out.println("do framework");
        bottom.init();
    }
}
// Bottom 類
public class Bottom {
    private Tire tire;
    public Bottom(Tire tire){
        this.tire = tire;
    }
    public void init(){
        System.out.println("do bottom");
        tire.init();
    }
}
// Tire 類
public class Tire {
    private int size = 16;
    private String color = "紅色";
    public Tire(int size,String color){
        this.size = size;
        this.color = color;
    }
    public void init(){
        System.out.println("size = " + size + " | color = " + color);
    }
}
// Test 類
public class Test {
    public static void main(String[] args) {
        Tire tire = new Tire(30,"黑色");
        Bottom bottom = new Bottom(tire);
        Framework framework = new Framework(bottom);
        Car car = new Car(framework);
        car.init();
    }
}

對比總結(jié)規(guī)律:

傳統(tǒng)代碼對象創(chuàng)建順序:Car -> Framework -> Bottom -> Tire

控制反轉(zhuǎn)對象創(chuàng)建順序:Tire -> Bottom -> Framework -> Car

回到最開始說的 Spring 的定義上:Spring 是包含多種工具方法的 IoC容器。

Spring ,作為一個 “容器”,應(yīng)該具備 2 個功能 :

1.從容器中取出對象

2.把對象存入容器中。

也就是說,Spring 最核心的功能,就是從 Spring 中獲取對象(Bean)和將對象存到 Spring 中。

要用這個對象,就從 Spring 中取就行了,不用了就把這個對象放回到 Spring 中。有點(diǎn)類似于"線程池"。

也就是把創(chuàng)建和銷毀對象的權(quán)力交給 Spring 了。

什么是DI?

DI = Dependency Injection (依賴注入)

就是在運(yùn)行 IoC 容器期間,動態(tài)的將某種依賴關(guān)系注入到對象中。

IoC 和 DI 是從不同角度,描述同一件事。引入 IoC 容器,利用 DI,最終實(shí)現(xiàn)解耦.

不過,IoC 更偏向于是一種"思想",DI更偏向于是一種"具體實(shí)現(xiàn)"。文章來源地址http://www.zghlxwxcb.cn/news/detail-431290.html

到了這里,關(guān)于Spring 核心與設(shè)計(jì)思想的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Spring框架概述及核心設(shè)計(jì)思想

    Spring框架概述及核心設(shè)計(jì)思想

    我們通常所說的 Spring 指的是 Spring Framework(Spring 框架),它是?個開源框架,有著活躍而龐大的社區(qū),這就是它之所以能長久不衰的原因;Spring 支持廣泛的應(yīng)用場景,它可以讓 Java 企業(yè)級的應(yīng)用程序開發(fā)起來更簡單。 用?句話概括 Spring: Spring 框架是包含了眾多工具方法的

    2024年02月16日
    瀏覽(24)
  • 【Spring】學(xué)習(xí)Spring需要掌握的核心設(shè)計(jì)思想

    【Spring】學(xué)習(xí)Spring需要掌握的核心設(shè)計(jì)思想

    目錄 一、Spring是什么 二、什么是IoC容器 1、什么是容器 2、什么是IoC? ?3、Spring IoC 4、DI(依賴注入) 4.1、IoC和DI的區(qū)別 5、 DL(依賴查找) 我們通常所說的Spring指的是Spring Framework(Framework的意思就是框架),它是一個開源的框架,有著龐大的社區(qū),這就是它之所以能長久不

    2024年02月14日
    瀏覽(31)
  • 【JavaEE進(jìn)階】Spring核心與設(shè)計(jì)思想

    【JavaEE進(jìn)階】Spring核心與設(shè)計(jì)思想

    我們通常所說的 Spring 指的是 Spring Framework (Spring 框架),它是一個輕量級的 Java 開源框架,有著活躍龐?的社區(qū)。Spring 是為了解決企業(yè)應(yīng)用開發(fā)的復(fù)雜性而創(chuàng)建的,不僅?持?泛的應(yīng)?場景,還讓 Java 企業(yè)級的應(yīng)?程序開發(fā)更加簡單。 如何簡單地使??句話概括 Spring:

    2024年02月13日
    瀏覽(33)
  • 【JavaEE進(jìn)階】——第二節(jié).Spring核心和設(shè)計(jì)思想

    【JavaEE進(jìn)階】——第二節(jié).Spring核心和設(shè)計(jì)思想

    文章目錄 前言 一、Spring是什么? 二、什么是容器? 三、什么是IoC? 3.1 初始loC 3.2 舉例解釋loC 3.3?Spring IoC思想的體現(xiàn) 四、什么是DI? 4.1DI的概念 4.2?Ioc和DI的區(qū)別 總結(jié) 今天我們將進(jìn)入到有關(guān)spring的認(rèn)識當(dāng)中,要使用它的前提就是要認(rèn)識并熟悉它,上一節(jié)我們介紹了有關(guān)mave

    2023年04月18日
    瀏覽(26)
  • 【Spring】Spring有什么用?Spring核心與設(shè)計(jì)思想之IOC與DI

    【Spring】Spring有什么用?Spring核心與設(shè)計(jì)思想之IOC與DI

    ?Spring是一個開源的、輕量級的、面向企業(yè)級的Java應(yīng)用框架。它提供了一種基于依賴注入和面向切面編程的方式,幫助開發(fā)者構(gòu)建高效、可擴(kuò)展的應(yīng)用程序。 ?具體來說, Spring可以看作一個包含眾多工具方法的IOC容器。 Spring的出現(xiàn)是為了讓開發(fā)更簡單~ 那么問題就很明確了

    2024年02月10日
    瀏覽(24)
  • 敏捷設(shè)計(jì)的的4個核心思想

    來自《互聯(lián)網(wǎng)產(chǎn)品之美》。 4個核心思想 1、強(qiáng)調(diào)面對面的溝通,也就是說溝通很重要,任何人的相互交流勝于任何流程和工具; 2、要把精力集中在可執(zhí)行的程序上,可以運(yùn)行的產(chǎn)品勝于綜合性文檔,也就是強(qiáng)調(diào)了原型、模型、演示等的重要性; 3、團(tuán)隊(duì)合作和團(tuán)隊(duì)激勵,合

    2024年02月09日
    瀏覽(22)
  • 【JavaEE進(jìn)階】 Spring核?與設(shè)計(jì)思想

    【JavaEE進(jìn)階】 Spring核?與設(shè)計(jì)思想

    我們通常所說的 Spring 指的是 Spring Framework(Spring 框架),它是?個開源框架,有著活躍?龐?的社區(qū),這就是它之所以能?久不衰的原因。Spring ?持?泛的應(yīng)?場景,它可以讓 Java 企業(yè)級的應(yīng)?程序開發(fā)起來更簡單。 ??句話概括 Spring: Spring 是包含了眾多?具?法的 I

    2024年02月04日
    瀏覽(25)
  • 【開源與項(xiàng)目實(shí)戰(zhàn):開源實(shí)戰(zhàn)】84 | 開源實(shí)戰(zhàn)四(上):剖析Spring框架中蘊(yùn)含的經(jīng)典設(shè)計(jì)思想或原則

    【開源與項(xiàng)目實(shí)戰(zhàn):開源實(shí)戰(zhàn)】84 | 開源實(shí)戰(zhàn)四(上):剖析Spring框架中蘊(yùn)含的經(jīng)典設(shè)計(jì)思想或原則

    在 Java 世界里,Spring 框架已經(jīng)幾乎成為項(xiàng)目開發(fā)的必備框架。作為如此優(yōu)秀和受歡迎的開源項(xiàng)目,它是我們源碼閱讀的首選材料之一,不管是設(shè)計(jì)思想,還是代碼實(shí)現(xiàn),都有很多值得我們學(xué)習(xí)的地方。接下來,我們就詳細(xì)講講 Spring 框架中蘊(yùn)含的設(shè)計(jì)思想、原則和模式。因?yàn)?/p>

    2024年02月12日
    瀏覽(14)
  • 二十四種設(shè)計(jì)模式與六大設(shè)計(jì)原則(三):【裝飾模式、迭代器模式、組合模式、觀察者模式、責(zé)任鏈模式、訪問者模式】的定義、舉例說明、核心思想、適用場景和優(yōu)缺點(diǎn)

    二十四種設(shè)計(jì)模式與六大設(shè)計(jì)原則(三):【裝飾模式、迭代器模式、組合模式、觀察者模式、責(zé)任鏈模式、訪問者模式】的定義、舉例說明、核心思想、適用場景和優(yōu)缺點(diǎn)

    接上次博客:二十四種設(shè)計(jì)模式與六大設(shè)計(jì)原則(二):【門面模式、適配器模式、模板方法模式、建造者模式、橋梁模式、命令模式】的定義、舉例說明、核心思想、適用場景和優(yōu)缺點(diǎn)-CSDN博客 目錄 裝飾模式【Decorator Pattern】 定義 舉例說明 核心思想 適用場景 優(yōu)缺點(diǎn) 迭代

    2024年04月17日
    瀏覽(25)
  • 設(shè)計(jì)模式-01.設(shè)計(jì)思想

    設(shè)計(jì)模式-01.設(shè)計(jì)思想

    此系列文章非本人原創(chuàng),是學(xué)習(xí)筆記。 下面講一些常見的設(shè)計(jì)思想 這個原則非常重要,是一種非常有效的提高代碼質(zhì)量的手段,在平時(shí)的開發(fā)中特別經(jīng)常被用到。 如何解讀原則中的“接口”二字? “基于接口而非實(shí)現(xiàn)編程”這條原則的英文描述是:“Program to an interface, n

    2024年02月07日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包