1. 程式人生 > >從set,get方法到設計模式在到Spring

從set,get方法到設計模式在到Spring

1:淺談set,get方法

任何寫java的人都用過上面2個方法,至於為什麼,想必每個人都有自己的理解吧?

看下面的例子中的註釋:

public class Ppt {

    //1直接new 具體物件
    //FastSot fastSot = new FastSot();
    //2使用介面,直接new 介面的子類
    //FastSotF fastSotF = new fastSot();
    //3配置介面,採用set方法執行時設定值
FastSotF fastSotF;
    public FastSotF getFastSotF() {
        return fastSotF
; } public void setFastSotF(FastSotF fastSotF) { this.fastSotF = fastSotF; } }

第一種方式中,直接new物件,肯定是最差的方式,比如需要新建一個功能或實現,需要修改1處的程式碼

第二種方式比第一種稍好,採用介面,新增新功能的時候,只需要新增一個新的實現類,修改一點程式碼,但是還是要修改程式碼,存在著程式碼耦合

那麼採用第三種方式,我們新增新功能的時候,只需要新增新的實現類,採用set方法設定新增的實現類。不要修改任何程式碼。由此可見這裡就不存在任何耦合

總結:第三種方式就是設計模式中的策略模式

    目的是解耦,用到了java的動態執行時繫結具體例項。

     能使用介面請優先使用介面

說解耦其實很簡單,就是減少程式碼之間的相互關聯,利於以後的擴充套件。有很多種實現方式,以後遇到了,我會一點一點加上去。

2:策略模式

不直接建立物件,執行時動態繫結例項。

3:關於spring的依賴注入和控制反轉

由上面來解釋依賴注入:不直接建立物件,執行時動態繫結例項。

控制反轉:上面的例子中,我們並沒有直接建立例項,那spring怎麼建立呢?

我們經常看見配置檔案: 

<bean id=“sessionFactory”  ....../>

具體類:

class ;..{

SessionFactory sf ;

//set get

}

       我們聲明瞭如何建立例項以及什麼樣的例項,和例項相關的資訊,spring根據配置資訊建立和用類的set方法注入到具體需要中。

如果我們需要採用另外一種sf的實現方式,那麼只要在配置檔案(或者註釋)中新建一個bean替換原來的bean就可以了。根本不要修改任何程式碼,這就可以完全實現解耦。

總結:我們為什麼要推薦使用介面?因為可以用子類來動態繫結,利於擴充套件和程式碼解耦。

上面是在下的膚淺認識,如有錯誤請指正。

切勿全相信樓主所說!