Java設(shè)計(jì)模塊共分為三個(gè):創(chuàng)建型模式、結(jié)構(gòu)型模式、行為模式。在前面的兩篇文章中,北京北大青鳥校區(qū)老師給同學(xué)們介紹了創(chuàng)建型模式和結(jié)構(gòu)型模式。今天我們將以通俗易懂的舉例方式來介紹第三塊模式也是最后一種:行為模式。
、行為模式
1、MEMENTO
舉例:同時(shí)跟幾個(gè)MM聊天時(shí),一定要記清楚分別跟MM說了些什么話,不然MM發(fā)現(xiàn)了會(huì)不高興,有個(gè)備忘錄,剛才與哪個(gè)MM說了什么話都拷貝一份放到備忘錄里面保存,這樣可以隨時(shí)察看以前的記錄。
備忘錄模式:備忘錄對(duì)象是一個(gè)用來存儲(chǔ)另外一個(gè)對(duì)象內(nèi)部狀態(tài)的快照的對(duì)象。備忘錄模式的用意是在不破壞封裝的條件下,將一個(gè)對(duì)象的狀態(tài)捉住,并外部化,存儲(chǔ)起來,從而可以在將來合適的時(shí)候把這個(gè)對(duì)象還原到存儲(chǔ)起來的狀態(tài)。
2、STRATEGY
舉例:跟不同類型的女孩約會(huì),要用不同的方法。有的喜歡浪漫,那就去海邊;有的喜歡娛樂,那就去看電影……目的都是為了得到芳心。
策略模式:策略模式針對(duì)一組算法,將每一個(gè)算法封裝到具有共同接口的獨(dú)立的類中,從而使得它們可以相互替換。策略模式使得算法可以在不影響到客戶端的情況下發(fā)生變化。策略模式把行為和環(huán)境分開。環(huán)境類負(fù)責(zé)維持和查詢行為類,各種算法在具體的策略類中提供。由于算法和環(huán)境獨(dú)立開來,算法的增減,修改都不會(huì)影響到環(huán)境和客戶端。
3、COMMAND
舉例:和女朋友分隔兩地,只能用書信聯(lián)系。她有什么想說的話都寫在信里讓郵遞員帶給我。一天,郵遞員又傳送過來一個(gè)COMMAND,同時(shí)告訴我,女朋友還分別給她的家人、朋友送了COMMAND。(北京北大青鳥校區(qū))
命令模式:命令模式把一個(gè)請(qǐng)求或者操作封裝到一個(gè)對(duì)象中。命令模式把發(fā)出命令的責(zé)任和執(zhí)行命令的責(zé)任分割開,委派給不同的對(duì)象。命令模式允許請(qǐng)求的一方和發(fā)送的一方獨(dú)立開來,使得請(qǐng)求的一方不必知道接收請(qǐng)求的一方的接口,更不必知道請(qǐng)求是怎么被接收,以及操作是否執(zhí)行,何時(shí)被執(zhí)行以及是怎么被執(zhí)行的。系統(tǒng)支持命令的撤消。
4、OBSERVER
舉例:同學(xué)聚會(huì)不需要一個(gè)個(gè)的通知,讓所有同學(xué)都加入一個(gè)郵件組,由班長(zhǎng)負(fù)責(zé)發(fā)送聚會(huì)消息,其他同學(xué)作為訂閱者(觀察者)就可以及時(shí)收到消息啦。
觀察者模式:觀察者模式定義了一種一隊(duì)多的依賴關(guān)系,讓多個(gè)觀察者對(duì)象同時(shí)監(jiān)聽某一個(gè)主題對(duì)象。這個(gè)主題對(duì)象在狀態(tài)上發(fā)生變化時(shí),會(huì)通知所有觀察者對(duì)象,使他們能夠自動(dòng)更新自己。
至此,Java的三塊模式都以講解完,希望同學(xué)們能夠通過通俗易懂的例子來消化這些知識(shí)。北京北大青鳥校區(qū)學(xué)術(shù)部提供。