组合模式 桥接模式 java_java设计模式5.组合模式、门面模式、享元模式、桥接模式...
組合模式
在面向對象的語言中,樹結構有著巨大的威力,一個基于繼承的類型的等級結構便是一個數結構,一個基于合成的對象結構也是一個數結構。組合模式將部分與整體的關系用樹結構表示出來,使得客戶端把一個個單獨的成分對象和由它們組合而成的合成對象同等看待。
抽象構建角色:一個抽象角色,給參加組合的對象規定一個接口,這個接口給出共有的接口及默認行為。
樹葉構建角色:代表參加組合的樹葉對象,沒有子對象,定義參加組合的原始對象行為。
樹枝構建角色:代表參加組合的有子對象的對象,并給出樹枝構件對象的行為。
對于子對象的管理方法如add,remove,getchild等,有兩種方式。一種是透明方式:直接定義在抽象構建角色中,這樣要求樹葉和樹枝構件都實現管理方法,但是在樹葉中是空實現。另一種是安全方式:只在樹枝構件中實現管理方法,而在樹葉構件中只實現共有的方法。
門面模式
門面模式要求一個子系統的外部與其內部的通信必須通過一個統一的門面對象進行。門面模式提供一個高層次的接口,使得子系統更易于使用。
門面角色:客戶端調用這個角色的方法。此角色知曉相關子系統的功能和責任,將所有客戶端的請求委派到相應的子系統。
子系統角色:可以同時有一個或者多個子系統。每個子系統可以被客戶端直接或者通過門面調用,子系統并不感知門面的存在。
享元模式
java中的String使用了享元模式。String對象是不變對象,即創建后不可以改變。如果要改變一個String的值,只有新建一個String對象。在JVM內部,String對象都是共享的,如果一個系統中有兩個String對象所包含的字符串相同,JVM實際上只創建了一個String對象,提供給兩個引用。從而實現String對象的共享。String.intern()方法給出這個字符串在共享池中的唯一實例。
抽象享元模式:所有具體享元類的超類,為這些類規定出需要實現的公共接口。
具體享元角色:實現抽象享元的所有接口,對象的部分或所有狀態與所處環境無關,是的對象可以在系統內共享。
享元工廠:負責創建和管理享元角色,如果已存在,則返回已有的實例。
客戶端角色:維護一個對享元角色的引用,自行管理享元對象中的可變狀態,客戶端不可以直接實例化享元對象,而必須通過工廠。
橋接模式
橋接模式的用意是通過聚合關系代替繼承將抽象化與實現化脫耦,使得二者可以獨立地變化。
抽象化角色:抽象化給出定義,并保存一個對實現化對象的引用。
修正抽象化角色:擴展抽象化角色,改變和修正父類對抽象化的定義。
實現化角色:給出實現化角色的接口,但不給出具體實現。此接口只給出底層操作,而抽象化角色給出基于底層操作的更高一層操作。
具體實現化角色:給出實現化角色接口的具體實現。
抽象化等級結構中的業務方法通過向對應的實現化對象委派自己的操作,這意味著抽象化角色可以通過向不同的實現化對象委派,來達到動態地轉換自己功能的目的。
大多數的驅動器都是橋接模式的應用。使用驅動程序的應用系統就是抽象化角色,而驅動器本身扮演著實現化角色。JDBC為所有的關系數據庫提供一個通用的接口。一個應用系統可以動態地選擇一個合適的驅動器,然后通過驅動器向數據庫引擎發出指令。由于JDBC驅動器的存在,應用系統可以不依賴于數據庫引擎的細節而獨立地演化,同時數據庫引擎也可以獨立于應用系統的細節而獨立演化。
#筆記內容參考《java與模式》
總結
以上是生活随笔為你收集整理的组合模式 桥接模式 java_java设计模式5.组合模式、门面模式、享元模式、桥接模式...的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: java红牛农场答案_Java面向对象程
 - 下一篇: 羊血汤的功效与作用、禁忌和食用方法