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