什么叫有狀態(tài)對象和無狀態(tài)對象?
什么叫有狀態(tài)對象和無狀態(tài)對象?
樓主說的是 Stateful Bean和Stateless Bean吧~~
是EJB SessionBean的兩個類型,
Stateful的話, SessionBean每次調(diào)用方法后會保持狀態(tài)。
Stateless的話, SessionBean每次調(diào)用方法時, 狀態(tài)全部回到默認值。
Stateful bean怎么樣才算是保持了狀態(tài)呢?
保持狀態(tài)如何理解?
有狀態(tài)就是有數(shù)據(jù)存儲功能,購物車就是很好的例子,買一件東西放進購物車,可以再次購買或者刪減。
無狀態(tài)就是一次操作,不保存數(shù)據(jù)。
有狀態(tài)對象,說白了就是有數(shù)據(jù)成員的對象,這樣的對象由數(shù)字描述其狀態(tài)。而保持狀態(tài)就是將其存儲在某個存儲器中以便以后使用。
無狀態(tài)對象很簡單咯,就是沒有數(shù)據(jù)成員的對象,通常這樣的對象只是有一些接口,起到橋接的作用。
Stateful的話, SessionBean每次調(diào)用方法后會保持狀態(tài)。
Stateless的話, SessionBean每次調(diào)用方法時, 狀態(tài)全部回到默認值。
舉例說明一下:
比如有個SessionBean叫做 BusinessLogicEJB, 下面有兩個方法, methodA(), methodB(), 和一個數(shù)據(jù)成員String data.
如果是Stateful, 那么methodA() 方法調(diào)用后, methodA()方法把data值改為"A", 那么methodB()在調(diào)用時, 就會得到data的值是"A".
如果是 Stateless, 那么methodA()中不論你怎么改變data的值, methodB()中取到的永遠是data = "".
(你沒學過J2EE EJB可能不理解, 明明是一個類里的兩個方法, 為什么A方法改變data的值, B方法去取data的值會還原為"")
看一下Sun公司J2ee EJB規(guī)范就知道了.
謝謝樓上的,明白了什么叫有狀態(tài)的和無狀態(tài)的了,