结构型模式——桥接模式
一、 實(shí)驗(yàn)?zāi)康呐c要求
1.練習(xí)使用橋接模式。設(shè)計(jì)相關(guān)的模擬場(chǎng)景并進(jìn)行實(shí)施,驗(yàn)證模式特性,掌握其優(yōu)缺點(diǎn)。
2.實(shí)驗(yàn)結(jié)束后,對(duì)相關(guān)內(nèi)容進(jìn)行總結(jié)。
二、實(shí)驗(yàn)內(nèi)容
1.模式應(yīng)用場(chǎng)景說(shuō)明
相信大家都看過(guò)羅老師買奶茶的情節(jié),現(xiàn)實(shí)生活中也是一樣,奶茶分為大杯中杯和小杯,而奶茶的口味有多種多樣,是每一種都對(duì)應(yīng)好幾個(gè)不同的杯型,可以將杯形和口味分別分開,就形成了各式各樣的,各種大小的奶茶了。
2.應(yīng)用場(chǎng)景類圖
3.實(shí)現(xiàn)代碼與解釋
3.1奶茶類(接口)
3.2奶茶杯類
package 橋接模式;public abstract class 奶茶杯 //定義一個(gè)抽象類, 奶茶杯 {protected 奶茶 milktea; //定義一個(gè)受保護(hù)的類 奶茶類public void setweidao(奶茶 milktea) //定義一個(gè)方法,將(奶茶 milktea)作為參數(shù)傳遞進(jìn)來(lái){this.milktea=milktea;}public abstract void weidao(String name); //定義一個(gè)抽象類,目的是選擇不同的奶茶口味。將名字傳遞進(jìn)來(lái)。 }3.3杯子類型
package 橋接模式;public class 大杯 extends 奶茶杯{public void weidao(String name) //定義方法,將奶茶的名字傳遞進(jìn)來(lái)。與杯子進(jìn)行結(jié)合{String cupType="大杯裝....";this.milktea.nc(cupType,name); } }3.4奶茶口味類
package 橋接模式; public class 巧克力味 implements 奶茶 {public void nc(String cupType,String name) //將寫好的奶茶,,,傳遞進(jìn)杯子類型大小,,奶茶名字。組合成不同的奶茶{System.out.println(cupType + "巧克力味"+ name + ".");} }3.5客戶端代碼
package 橋接模式;public class Client {public static void main(String []args) {奶茶 ncmm;奶茶杯 Cup;ncmm=(奶茶)XMLUtil.getBean("nc");Cup=(奶茶杯)XMLUtil.getBean("cup");Cup.setweidao(ncmm);Cup.weidao("nice");} }3.6外部文件以及配置
package 橋接模式;import javax.xml.parsers.*; import org.w3c.dom.*; import org.xml.sax.SAXException; import java.io.*; public class XMLUtil { //該方法用于從XML配置文件中提取具體類類名,并返回一個(gè)實(shí)例對(duì)象public static Object getBean(String args){try{//創(chuàng)建文檔對(duì)象DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = dFactory.newDocumentBuilder();Document doc; doc = builder.parse(new File("E:\\eclipse-workspace\\橋接模式\\src\\橋接模式\\BridgeconfigPen.xml")); //獲取包含類名的文本節(jié)點(diǎn)NodeList nl = doc.getElementsByTagName("className");Node classNode=nl.item(0).getFirstChild();String cName=classNode.getNodeValue();//通過(guò)類名生成實(shí)例對(duì)象并將其返回Class c=Class.forName("橋接模式."+cName);Object obj=c.newInstance();return obj;} catch(Exception e){e.printStackTrace();return null;}} }4.結(jié)果及分析
三、實(shí)驗(yàn)總結(jié)
通過(guò)橋接模式的練習(xí),讓我們明白了。橋接模式是將加法變成乘法的模式。通過(guò)兩個(gè)不同的維度變化,可以創(chuàng)建出許許多多的不同的相似產(chǎn)品來(lái)。但是重復(fù)代碼會(huì)很多。類的結(jié)構(gòu)過(guò)于復(fù)雜,繼承關(guān)系太多,難于維護(hù),最后最致命的一點(diǎn)是擴(kuò)展性太差。
總結(jié)
以上是生活随笔為你收集整理的结构型模式——桥接模式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 创建和删除文件夹命令创建和删除文件夹命令
- 下一篇: 聊天软件可以隐藏吗聊天软件可以隐藏吗苹果