不變模式:
不變模式可以增強對象的強壯性,不變模式準(zhǔn)許多個對象共享一個對象,這降低了對該對象進行并發(fā)訪問時的同步化開銷。如果要修改一個不變對象的狀態(tài),則需要創(chuàng)建一個新的對象,并將其存入新的對象里。不變模式只涉及到一個類,一個類的內(nèi)部狀態(tài)一旦被創(chuàng)建以后,在整個期間都不會發(fā)生變化。他有兩種一種是強不變模式和弱不變模式。
弱不變模式:
首先滿足沒有方法可以改變對象的狀態(tài),則對象一旦被創(chuàng)建之后,對象的狀態(tài)就不會改變。二該對象的所有的屬性都是私有的,并且不準(zhǔn)許聲明任何公有的方法來改變他們。三這個對象所引用的對象也應(yīng)該是不變的對象,如果在初始化時應(yīng)用了一個可變的對象,則應(yīng)該對該可變對象進行復(fù)制一份,而不要使用原來的拷貝。這種模式的缺點是他可以用子類,并且子類可以是可變的對象。可變的子類可能一修改父類對象的狀態(tài),從而可能會允許外界修改父對象的狀態(tài)。
問題: 為什么說可變的對象可以修該父類對象的狀態(tài)呢?怎樣做?
強不變模式首先要滿足弱不變模式,然后將這個類聲明成final類,則它變不可能有子類了,并且也將該對象所考慮到的所有方法聲明為final。
不變模式與享元模式有很大的相同處,他們的對象狀態(tài)都有要求不隨環(huán)境的變化而變化,不過享元模式的內(nèi)涵狀態(tài)在不影響享元對象的共享時,可以為可變的。不變模式對對象的要求要比享元模式對對象的要求更嚴格。
posted on 2005-08-14 23:39
sky 閱讀(646)
評論(2) 編輯 收藏