技術分享
Ioc/DI
IoC/DI 分別是 Inversion of Control (控制反轉) 與 Dependency Injection (依賴注射) 這兩個單字的合體,字面上看起來實在是有點繞口。簡單的說,IoC (Inversion of Control) 控制反轉是一種物件導向程式設計的概念,主要的目的也是為降低系統耦合度(coupling),將程式中的控制邏輯進行移轉,讓程式碼之間的控制關係簡化。IoC 這個詞聽起來實在是太玄了,其中最常見的實作技巧就是 DI (Dependency Injection) 依賴注射設計模式 (Design Pattern),可以讓你的程式架構進行解耦合(Decoupling),更容易實現可以動態組合的模組化架構。
所謂的getter以及setter是用來作為物件的私有(private)變數或屬性(field)的公用存取介面(public access interface)
POJO(Plain Old Java Object)這種叫法是 Martin Fowler、Rebecca Parsons 和 Josh MacKenzie 在2000年的一次演講的時候提出來的。
按照 Martin Fowler 的解釋是 Plain Old Java Object。 POJO 的內在含義是指:那些沒有繼承任何類、也沒有實現任何接口,更沒有被其它框架侵入的 java 對象。
一個 POJO 是一個不受任何限制的 Java 對象(除了 Java 語言規範)。例如一個 POJO 不應該是
POJO 可以認為是一個中間對象:
POJO 持久化之後 -> PO (persistent object)
POJO 傳輸過程中 -> DTO (Data Transfer Object)
主要用於遠程調用等需要大量傳輸物件的地方,可以將PO中的部分屬性抽取出來,就形成了DTO。
比如我們一張表有100個字段,那麼對應的 PO 就有100個屬性。
但是我們界面上只要顯示10個字段,客戶端用 WEB service 來獲取數據,沒有必要把整個PO對像傳遞到客戶端,這時我們就可以用只有這10個屬性的 DTO 來傳遞結果到客戶端,這樣也不會暴露服務端表結構.到達客戶端以後,如果用這個對象來對應界面顯示,那此時它的身份就轉為VO(View Object)。
POJO 用作表示層 -> VO (Value Object)
JavaBean 實際上是指一種特殊的 Java 類別,它通常用來實現一些比較常用的簡單功能,並可以很容易的被重用或者是插入其他應用程序中。所有遵循一定編程原則的 Java 類別都可以被稱作 JavaBean。
JavaBean 是一個遵循特定寫法的 Java 類別,是一種 Java 語言編寫的可重用組件,它的方法命名,構造及行為必須符合特定的約定:
1、這個類別必須具有一個公共的(public)無參構造方法;
2、所有屬性私有化(private);
3、私有化的屬性必須通過 public 類型的方法(getter和setter)暴露給其他程序,並且方法的命名也必須遵循一定的命名規範。
4、這個類應是可序列化的。 (比如可以實現 Serializable 接口,用於實現bean的持久性)
因為這些要求主要是靠約定而不是靠實現接口,所以許多開發者把 JavaBean 看作遵從特定命名約定的 POJO。 (可以這麼理解,POJO 按 JavaBean 的規則來,就可以變成 JavaBean)。
簡而言之,當一個 POJO 可序列化,有一個無參數的構造方法,使用 getter 和 setter 方法來訪問屬性時,它就是一個 JavaBean。
維基-Inversion of control
維基-JavaBeans
淺談 IoC/DI 依賴注射與控制反轉
羅倫斯的IT航海日誌-關於getter與setter
什么是JavaBean、bean? 什么是POJO、PO、DTO、VO、BO ? 什么是EJB、EntityBean?