隨筆-19  評(píng)論-2  文章-1  trackbacks-0
          不變模式:
                 
                  不變模式可以增強(qiáng)對(duì)象的強(qiáng)壯性,不變模式準(zhǔn)許多個(gè)對(duì)象共享一個(gè)對(duì)象,這降低了對(duì)該對(duì)象進(jìn)行并發(fā)訪問(wèn)時(shí)的同步化開(kāi)銷(xiāo)。如果要修改一個(gè)不變對(duì)象的狀態(tài),則需要?jiǎng)?chuàng)建一個(gè)新的對(duì)象,并將其存入新的對(duì)象里。不變模式只涉及到一個(gè)類(lèi),一個(gè)類(lèi)的內(nèi)部狀態(tài)一旦被創(chuàng)建以后,在整個(gè)期間都不會(huì)發(fā)生變化。他有兩種一種是強(qiáng)不變模式和弱不變模式。
                  弱不變模式:
          首先滿(mǎn)足沒(méi)有方法可以改變對(duì)象的狀態(tài),則對(duì)象一旦被創(chuàng)建之后,對(duì)象的狀態(tài)就不會(huì)改變。二該對(duì)象的所有的屬性都是私有的,并且不準(zhǔn)許聲明任何公有的方法來(lái)改變他們。三這個(gè)對(duì)象所引用的對(duì)象也應(yīng)該是不變的對(duì)象,如果在初始化時(shí)應(yīng)用了一個(gè)可變的對(duì)象,則應(yīng)該對(duì)該可變對(duì)象進(jìn)行復(fù)制一份,而不要使用原來(lái)的拷貝。這種模式的缺點(diǎn)是他可以用子類(lèi),并且子類(lèi)可以是可變的對(duì)象??勺兊淖宇?lèi)可能一修改父類(lèi)對(duì)象的狀態(tài),從而可能會(huì)允許外界修改父對(duì)象的狀態(tài)。

          問(wèn)題:
                 為什么說(shuō)可變的對(duì)象可以修該父類(lèi)對(duì)象的狀態(tài)呢?怎樣做?

          強(qiáng)不變模式首先要滿(mǎn)足弱不變模式,然后將這個(gè)類(lèi)聲明成final類(lèi),則它變不可能有子類(lèi)了,并且也將該對(duì)象所考慮到的所有方法聲明為final。
          不變模式與享元模式有很大的相同處,他們的對(duì)象狀態(tài)都有要求不隨環(huán)境的變化而變化,不過(guò)享元模式的內(nèi)涵狀態(tài)在不影響享元對(duì)象的共享時(shí),可以為可變的。不變模式對(duì)對(duì)象的要求要比享元模式對(duì)對(duì)象的要求更嚴(yán)格。


          posted on 2005-08-14 23:39 sky 閱讀(644) 評(píng)論(2)  編輯  收藏

          評(píng)論:
          # re: Immutable 不變模式 2008-04-13 16:22 | wangsh
          Good question,I Think in the java language,The weak immutable and stronge immutable is undiference!   回復(fù)  更多評(píng)論
            
          # re: Immutable 不變模式 2009-09-16 11:45 | TYY
          我認(rèn)為這應(yīng)該和多態(tài)有關(guān)系吧!比如toString()方法,Base base = new Sub();
          System.out.println("base = " + base);打印出的結(jié)果其實(shí)是Sub對(duì)象的!  回復(fù)  更多評(píng)論
            

          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 青州市| 临武县| 中宁县| 延吉市| 宜宾市| 都江堰市| 德保县| 洪洞县| 开江县| 新和县| 苍南县| 巴东县| 息烽县| 铜川市| 嵊州市| 肇东市| 凤城市| 霍邱县| 阿鲁科尔沁旗| 巫溪县| 荣成市| 西乌珠穆沁旗| 合江县| 京山县| 中牟县| 昌黎县| 龙川县| 临颍县| 敖汉旗| 梁平县| 新民市| 仲巴县| 南靖县| 称多县| 罗源县| 镇雄县| 平陆县| 嵩明县| 秀山| 右玉县| 容城县|