從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就可以了。根本不要修改任何程式碼,這就可以完全實現解耦。
總結:我們為什麼要推薦使用介面?因為可以用子類來動態繫結,利於擴充套件和程式碼解耦。
上面是在下的膚淺認識,如有錯誤請指正。
切勿全相信樓主所說!