Java Composite Entity Pattern(組合實(shí)體模式)

組合實(shí)體模式(Composite Entity Pattern)用在 EJB 持久化機(jī)制中。一個組合實(shí)體是一個 EJB 實(shí)體 bean琅摩,代表了對象的圖解铁孵。當(dāng)更新一個組合實(shí)體時,內(nèi)部依賴對象 beans 會自動更新房资,因?yàn)樗鼈兪怯?EJB 實(shí)體 bean 管理的蜕劝。以下是組合實(shí)體 bean 的參與者。

  • 組合實(shí)體(Composite Entity) - 它是主要的實(shí)體 bean轰异。它可以是粗粒的岖沛,或者可以包含一個粗粒度對象,用于持續(xù)生命周期搭独。
  • 粗粒度對象(Coarse-Grained Object) - 該對象包含依賴對象婴削。它有自己的生命周期,也能管理依賴對象的生命周期牙肝。
  • 依賴對象(Dependent Object) - 依賴對象是一個持續(xù)生命周期依賴于粗粒度對象的對象唉俗。
  • 策略(Strategies) - 策略表示如何實(shí)現(xiàn)組合實(shí)體嗤朴。
  1. 創(chuàng)建依賴對象。
/**
 * 1. 創(chuàng)建依賴對象虫溜。
 * @author mazaiting
 */
public class DependentObject1 {
    private String data;

    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }
}


/**
 * 1. 創(chuàng)建依賴對象雹姊。
 * @author mazaiting
 */
public class DependentObject2 {
    private String data;

    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }
}
  1. 創(chuàng)建粗粒度對象。
/**
 * 2. 創(chuàng)建粗粒度對象衡楞。
 * @author mazaiting
 */
public class CoarseGrainedObject {
    DependentObject1 do1 = new DependentObject1();
    DependentObject2 do2 = new DependentObject2();
    
    public void setData(String data1, String data2) {
        do1.setData(data1);
        do2.setData(data2);
    }
    
    public String[] getData() {
        return new String[]{do1.getData(), do2.getData()};
    }
    
}
  1. 創(chuàng)建組合實(shí)體類
/**
 * 3. 創(chuàng)建組合實(shí)體類
 * @author mazaiting
 */
public class CompositeEntity {
    private CoarseGrainedObject cgo = new CoarseGrainedObject();
    public void setData(String data1, String data2){
        cgo.setData(data1, data2);
    }
    public String[] getData(){
        return cgo.getData();
    }
}
  1. 創(chuàng)建使用組合實(shí)體的客戶端類吱雏。
/**
 * 4. 創(chuàng)建使用組合實(shí)體的客戶端類。
 * @author mazaiting
 */
public class Client {
    private CompositeEntity compositeEntity = new CompositeEntity();
    
    public void printData(){
        for (int i = 0; i < compositeEntity.getData().length; i++) {
            System.out.println("Data: " + compositeEntity.getData()[i]);
        }
    }
    
    public void setData(String data1, String data2){
        compositeEntity.setData(data1, data2);
    }   
    
}
  1. 使用 Client 來演示組合實(shí)體設(shè)計模式的用法寺酪。
/**
 * 5. 使用 Client 來演示組合實(shí)體設(shè)計模式的用法坎背。
 * @author mazaiting
 */
public class Test {
    
    public static void main(String[] args) {
        Client client = new Client();
        
        client.setData("Test", "Data");
        client.printData();
        
        client.setData("Second Test", "Data1");
        client.printData();
        
    }

}
  1. 打印結(jié)果
Data: Test
Data: Data
Data: Second Test
Data: Data1.
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市寄雀,隨后出現(xiàn)的幾起案子得滤,更是在濱河造成了極大的恐慌,老刑警劉巖盒犹,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件懂更,死亡現(xiàn)場離奇詭異,居然都是意外死亡急膀,警方通過查閱死者的電腦和手機(jī)沮协,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來卓嫂,“玉大人慷暂,你說我怎么就攤上這事〕况ǎ” “怎么了行瑞?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長餐禁。 經(jīng)常有香客問我血久,道長,這世上最難降的妖魔是什么帮非? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任氧吐,我火速辦了婚禮,結(jié)果婚禮上末盔,老公的妹妹穿的比我還像新娘筑舅。我一直安慰自己,他們只是感情好庄岖,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布豁翎。 她就那樣靜靜地躺著,像睡著了一般隅忿。 火紅的嫁衣襯著肌膚如雪心剥。 梳的紋絲不亂的頭發(fā)上邦尊,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天,我揣著相機(jī)與錄音优烧,去河邊找鬼蝉揍。 笑死,一個胖子當(dāng)著我的面吹牛畦娄,可吹牛的內(nèi)容都是我干的又沾。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼熙卡,長吁一口氣:“原來是場噩夢啊……” “哼杖刷!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起驳癌,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤滑燃,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后颓鲜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體表窘,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年甜滨,在試婚紗的時候發(fā)現(xiàn)自己被綠了乐严。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡衣摩,死狀恐怖昂验,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情艾扮,我是刑警寧澤凛篙,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站栏渺,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏锐涯。R本人自食惡果不足惜磕诊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望纹腌。 院中可真熱鬧霎终,春花似錦、人聲如沸升薯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽涎劈。三九已至广凸,卻和暖如春阅茶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背谅海。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工脸哀, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人扭吁。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓撞蜂,卻偏偏與公主長得像,于是被迫代替她去往敵國和親侥袜。 傳聞我的和親對象是個殘疾皇子蝌诡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法枫吧,內(nèi)部類的語法浦旱,繼承相關(guān)的語法,異常的語法由蘑,線程的語...
    子非魚_t_閱讀 31,597評論 18 399
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 3,805評論 0 11
  • 1闽寡、面向?qū)ο蟮奶卣饔心男┓矫?1.抽象:抽象就是忽略一個主題中與當(dāng)前目標(biāo)無關(guān)的那些方面,以便更充分地注意與當(dāng)前目標(biāo)...
    michaelgong閱讀 815評論 0 1
  • 導(dǎo)讀:從JDK 5.0開始 J2EE 改名為 Java EE尼酿。 Java EE被企業(yè)廣泛使用爷狈,必然有其可取之處,甚...
    堯淳閱讀 651評論 0 3
  • (一)EJB與WebServices部分 1.EBJ是基于哪些技術(shù)實(shí)現(xiàn)的和JavaBean的區(qū)別裳擎? EJB包括Se...
    獨(dú)云閱讀 977評論 0 0