Java設(shè)計模塊共分為三個:創(chuàng)建型模式、結(jié)構(gòu)型模式、行為模式。在上一篇文章中,北京北大青鳥校區(qū)老師給同學(xué)們介紹了創(chuàng)建型模式,今天我們將繼續(xù)以通俗易懂的舉例方式來介紹第二塊模式,結(jié)構(gòu)型模式
結(jié)構(gòu)型模式
1、BRIDGE
舉例:早上碰到MM,要說早上好,晚上碰到MM,要說晚上好;碰到MM穿了件新衣服,要說你的衣服好漂亮哦,碰到MM新做的發(fā)型,要說你的頭發(fā)好漂亮哦。不要問我"早上碰到MM新做了個發(fā)型怎么說"這種問題,自己用BRIDGE組合一下不就行了。
橋梁模式:將抽象化與實現(xiàn)化脫耦,使得二者可以獨(dú)立的變化,也就是說將他們之間的強(qiáng)關(guān)聯(lián)變成弱關(guān)聯(lián),也就是指在一個軟件系統(tǒng)的抽象化和實現(xiàn)化之間使用組合/聚合關(guān)系而不是繼承關(guān)系,從而使兩者可以獨(dú)立的變化。
2、FACADE
舉例;我有一個專業(yè)的單反相機(jī),喜歡自己手動調(diào)光圈、快門,這樣照出來的照片才專業(yè),但MM可不懂這些,教了半天也不會。幸好相機(jī)有Facade設(shè)計模式,把相機(jī)調(diào)整到自動檔,只要對準(zhǔn)目標(biāo)按快門就行了,一切由相機(jī)自動調(diào)整。
門面模式:外部與一個子系統(tǒng)的通信必須通過一個統(tǒng)一的門面對象進(jìn)行。門面模式提供一個高層次的接口,使得子系統(tǒng)更易于使用。每一個子系統(tǒng)只有一個門面類,而且此門面類只有一個實例,也就是說它是一個單例模式。但整個系統(tǒng)可以有多個門面類。(北京北大青鳥校區(qū))
3、DECORATOR
舉例;最好的朋友過生日,可是這個月我“手頭有點(diǎn)緊”怎么辦?拿出我們?nèi)ツ耆ヂ糜蔚南嗥诒趁鎸懮希鹤詈玫亩Y物,就是我們共同擁有的美好回憶,然后再去禮品店找個漂亮的相框表起來……我們都是Decorator,最終都在修飾我這個人呀,怎么樣,看懂了嗎?
裝飾模式:裝飾模式以對客戶端透明的方式擴(kuò)展對象的功能,是繼承關(guān)系的一個替代方案,提供比繼承更多的靈活性。動態(tài)給一個對象增加功能,這些功能可以再動態(tài)的撤消。增加由一些基本功能的排列組合而產(chǎn)生的非常大量的功能。
4、ADAPTER-在朋友聚會上碰到了一個異國美女,可是我們倆語言不通,只要求助我的朋友當(dāng)翻譯,當(dāng)溝通橋梁。
適配器(變壓器)模式:把一個類的接口變換成客戶端所期待的另一種接口,從而使原本因接口原因不匹配而無法一起工作的兩個類能夠一起工作。適配類可以根據(jù)參數(shù)返還一個合適的實例給客戶端。(北京北大青鳥校區(qū))