天天看小說

第206章

大B:“在談及軟件中的結(jié)構(gòu),一般會(huì)用UML圖表示。”

小A:“喔。”

大B:“UML和ANT、JUnit等都是軟件設(shè)計(jì)中基本的工具,會(huì)了沒有啊!”

小A:“是嗎?”

大B:“我和你具體說說。1、Component就是裝飾器模式中公共方法的類,在裝飾器模式結(jié)構(gòu)圖的頂層。2、ConcreateComponent是轉(zhuǎn)換器模式中具體的被裝飾的類,IO包中的媒體流就是此種對(duì)象。3、Decorator裝飾器模式中的核心對(duì)象,所有具體裝飾器對(duì)象的父類,完成裝飾器的部份職能。剛纔的例子中Decorator類和這裡的對(duì)應(yīng)。該類可以只做一些簡單的包裹被裝飾的對(duì)象,也可以還包含對(duì)Component中方法的實(shí)現(xiàn)……它有一個(gè)鮮明的特點(diǎn):繼承至Component,同時(shí)包含一個(gè)Component作爲(wèi)其成員變量。裝飾器模式動(dòng)機(jī)中的動(dòng)態(tài)地增加功能是在這裡實(shí)現(xiàn)的。4、ConcreteDecoratorA和ConcreteDecoratorB是兩個(gè)具體的裝飾器對(duì)象,他們完成具體的裝飾功能。裝飾功能的實(shí)現(xiàn)是通過調(diào)用被裝飾對(duì)象對(duì)應(yīng)的方法,加上裝飾對(duì)象自身的方法。這是裝飾器模式動(dòng)機(jī)中的添加額外功能的關(guān)鍵。你可能還會(huì)發(fā)現(xiàn):ConcreteDecoratorA和ConcreteDecoratorB的方法不一樣,這就是一般設(shè)計(jì)模式中談及裝飾器模式的‘透明裝飾器’和‘不透明裝飾器’。‘透明裝飾器’就是整個(gè)Decorator的結(jié)構(gòu)中所有的類都保持同樣的‘接口’,這裡是共同方法的意思,這是一種極其理想的狀況,就像餐飲的例子一樣。現(xiàn)實(shí)中絕大多數(shù)裝飾器都是‘不透明裝飾器’,它們的‘接口’在某些子類中得到增強(qiáng),主要看這個(gè)類與頂層的抽象類或者接口是否有同樣的公共方法。IO中的ByteArrayInputStream就比Inputstrem抽象類多一些方法,因此IO中的裝飾器是一個(gè)‘不透明裝飾器’。”

小A:“喔。”

大B:“從IO中輸入字節(jié)流部分的裝飾器我們可以知道:1、InputStream是裝飾器的頂層類,一個(gè)抽象類!包括一些共有的方法,如:1、讀方法——read(3個(gè));2、關(guān)閉流的方法——close;3、mark相關(guān)的方法——mark、reset和markSupport;4、跳躍方法——skip;5、查詢是否還有元素方法——available。2、FileInputStream、PipedInputStream……五個(gè)紫色的,是具體的被裝飾對(duì)象。從它們的‘接口’中可以看出它們一般都有額外的方法。3、FilterInputStream是裝飾器中的核心,Decorator對(duì)象。4、DataInputStream、BufferedInputStream……四個(gè)是具體的裝飾器,它們保持了和InputStream同樣的接口。5、ObjectInputStream是IO字節(jié)輸入流中特殊的裝飾器,它不是FilterInputStream的子類,不知道Sun處於何種意圖不作爲(wèi)FileterInputStream的子類,其中流中也有不少的例子。它和其他FilterInputStream的子類功能相似都可以裝飾其他對(duì)象。IO包中不僅輸入字節(jié)流是採用裝飾器模式、輸出字節(jié)流、輸入字符流和輸出字符流都是採用裝飾器模式。”

第115章第124章第12章第74章第84章第104章第219章第85章第5章第131章第90章第98章第92章第7章第23章第32章第125章第75章第48章第4章第27章第41章第170章第168章第207章第226章第217章第75章第200章第35章第68章第81章第195章第3章第215章第133章第120章第63章第147章第167章第220章第105章第37章第144章第174章第133章第227章第94章第160章第148章第147章第116章第207章第23章第202章第154章第100章第180章第208章第12章第127章第104章第76章第166章第108章第17章第199章第190章第101章第63章第112章第129章第119章第39章第212章第115章第43章第186章第124章第134章第169章第221章第162章第25章第150章第201章第57章第94章第26章第148章第186章第150章第180章第197章第76章第33章第164章第137章第203章第99章
第115章第124章第12章第74章第84章第104章第219章第85章第5章第131章第90章第98章第92章第7章第23章第32章第125章第75章第48章第4章第27章第41章第170章第168章第207章第226章第217章第75章第200章第35章第68章第81章第195章第3章第215章第133章第120章第63章第147章第167章第220章第105章第37章第144章第174章第133章第227章第94章第160章第148章第147章第116章第207章第23章第202章第154章第100章第180章第208章第12章第127章第104章第76章第166章第108章第17章第199章第190章第101章第63章第112章第129章第119章第39章第212章第115章第43章第186章第124章第134章第169章第221章第162章第25章第150章第201章第57章第94章第26章第148章第186章第150章第180章第197章第76章第33章第164章第137章第203章第99章
主站蜘蛛池模板: 华坪县| 德化县| 花垣县| 古交市| 酉阳| 从江县| 绥中县| 拜泉县| 布拖县| 淳安县| 綦江县| 顺平县| 建瓯市| 北碚区| 札达县| 榕江县| 喜德县| 彰化县| 张家口市| 宜州市| 宾川县| 竹溪县| 房山区| 梁山县| 通河县| 泰州市| 漳浦县| 嵊泗县| 静海县| 肥乡县| 沈丘县| 武川县| 随州市| 老河口市| 古田县| 英超| 冷水江市| 亳州市| 凌源市| 什邡市| 凭祥市|