第206章

大B:“在談及軟件中的結構,一般會用UML圖表示。”

小A:“喔。”

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

小A:“是嗎?”

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

小A:“喔。”

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

第202章第100章第207章第169章第182章第222章第199章第151章第80章第185章第111章第140章第186章第63章第130章第211章第81章第72章第85章第121章第34章第113章第177章第110章第7章第31章第226章第57章第73章第49章第224章第192章第162章第27章第70章第17章第135章第195章第171章第153章第88章第138章第198章第139章第57章第19章第128章第83章第206章第140章第199章第38章第19章第30章第79章第164章第61章第204章第44章第132章第64章第44章第136章第146章第52章第179章第216章第28章第220章第53章第91章第163章第219章第121章第90章第185章第52章第220章第186章第54章第7章第162章第74章第18章第200章第220章第126章第104章第88章第35章第195章第86章第23章第130章第124章第107章第222章第168章第29章
第202章第100章第207章第169章第182章第222章第199章第151章第80章第185章第111章第140章第186章第63章第130章第211章第81章第72章第85章第121章第34章第113章第177章第110章第7章第31章第226章第57章第73章第49章第224章第192章第162章第27章第70章第17章第135章第195章第171章第153章第88章第138章第198章第139章第57章第19章第128章第83章第206章第140章第199章第38章第19章第30章第79章第164章第61章第204章第44章第132章第64章第44章第136章第146章第52章第179章第216章第28章第220章第53章第91章第163章第219章第121章第90章第185章第52章第220章第186章第54章第7章第162章第74章第18章第200章第220章第126章第104章第88章第35章第195章第86章第23章第130章第124章第107章第222章第168章第29章