結(jié)構(gòu)型模式涉及到如何組合類和對象以獲得更大的結(jié)構(gòu)课兄。結(jié)構(gòu)性類模式采用繼承機(jī)制來組合接口或?qū)崿F(xiàn)铐伴。
Adapter ( 4 . 1 )適配器模式使得一個接口 ( adaptee的接口)與其他接口兼容,從而給出了多個不同接口的統(tǒng)一抽象。為此,類適配器對一個adaptee類進(jìn)行私有繼承。這樣妻柒,適配器就可以用adaptee的接口表示它的接口。
Composite(4.3)模式是結(jié)構(gòu)型對象模式的一個實(shí)例耘分。它描述了如何構(gòu)造一個類層次式結(jié)構(gòu)举塔,這一結(jié)構(gòu)由兩種類型的對象(基元對象和組合對象)所對應(yīng)的類構(gòu)成绑警。其中的組合對象使得你可以組合基元對象以及其他的組合對象,從而形成任意復(fù)雜的結(jié)構(gòu)央渣。
Proxy(4.7)模式中计盒,proxy對象作為其它對象的一個方便的替代或占位符。它的使用可以有多種形式芽丹,例如它可以在局部空間中代表一個遠(yuǎn)程地址空間中的對象北启,也可以表示一個要求被加載的較大的對象,還可以用來保護(hù)對敏感對象的訪問拔第。Proxy模式還提供了對對象的一些特有性質(zhì)的一定程度上的間接訪問咕村,從而它可以限制、增強(qiáng)或修改這些性質(zhì)蚊俺。
Flyweight(4.6)模式為了共享對象定義了一個結(jié)構(gòu)懈涛。至少有兩個原因要求對象共享:效率和一致性。Flyweight的對象共享機(jī)制主要強(qiáng)調(diào)對象的空間效率泳猬。使用很多對象的應(yīng)用必需考慮每一個對象的開銷批钠。使用對象共享而不是進(jìn)行對象復(fù)制,可以節(jié)省大量的空間資源暂殖。但是僅當(dāng)這些對象沒有定義與上下文相關(guān)的狀態(tài)時价匠,它們才可以被共享。
Facade ( 4 . 5 )模式則描述了如何用單個對象表示整個子系統(tǒng)呛每。
Bridge ( 4 . 2 )模式將對象的抽象和其實(shí)現(xiàn)分離,從而可以獨(dú)立地改變它們坡氯。模式中的bridge用來表示一組對象晨横,bridge的職責(zé)是將消息轉(zhuǎn)發(fā)給它所表示的對象。
Decorator( 4 . 4 )模式描述了如何動態(tài)地為對象添加職責(zé)箫柳。 Decorator模式是一種結(jié)構(gòu)型模式手形。這一模式采用遞歸方式組合對象,從而允許你添加任意多的對象職責(zé)悯恍。