zoukankan      html  css  js  c++  java
  • 组合实体模式

    1.组合实体模式简介

    组合实体模式(Composite Entity Pattern)用在 EJB 持久化机制中。一个组合实体是一个 EJB 实体 bean,代表了对象的图解。当更新一个组合实体时,内部依赖对象 beans 会自动更新,因为它们是由 EJB 实体 bean 管理的。以下是组合实体 bean 的参与者。

    组合实体(Composite Entity) - 它是主要的实体 bean。它可以是粗粒的,或者可以包含一个粗粒度对象,用于持续生命周期。

    粗粒度对象(Coarse-Grained Object) - 该对象包含依赖对象。它有自己的生命周期,也能管理依赖对象的生命周期。

    依赖对象(Dependent Object) - 依赖对象是一个持续生命周期依赖于粗粒度对象的对象。

    策略(Strategies) - 策略表示如何实现组合实体。


    2.示例Demo

    /*被依赖对象1*/
    class DependentObject1 {
        private String data;
    
        public void setData(String data) {
            this.data = data;
        }
    
        public String getData() {
            return data;
        }
    }
    
    /*被依赖对象2*/
    class DependentObject2 {
        private String data;
    
        public void setData(String data) {
            this.data = data;
        }
    
        public String getData() {
            return data;
        }
    }
    
    /*粗粒度对象组合了被依赖对象1和被依赖对象2*/
    class CoarseGrainedObject {
        private DependentObject1 obj1 = new DependentObject1();
        private DependentObject2 obj2 = new DependentObject2();
        
        public void setData(String data1, String data2) {
            obj1.setData(data1);
            obj2.setData(data2);    
        }
    
        public String[] getData() {
            return new String[]{obj1.getData(), obj2.getData()};
        }
    }
    
    /*组合实体中组合粗粒度对象*/
    class CompositeEntity {
        private CoarseGrainedObject cgo = new CoarseGrainedObject();
    
        public void setData(String data1, String data2) {
            cgo.setData(data1, data2);
        }
    
        public String[] getData() {
            return cgo.getData();
        }
    }
    
    /*Client直接与组合实体交互*/
    class Client {
        private CompositeEntity entity = new CompositeEntity();
    
        public void printData() {
            for (int i = 0; i < entity.getData().length; i++) {
                System.out.println("data = " + entity.getData()[i]);
            }
        }
    
        public void setData(String data1, String data2) {
            entity.setData(data1, data2);
        }
    }
    
    
    public class CompositeEntityPatternDemo {
        public static void main(String args[]) {
            Client client = new Client();
            client.setData("first", "1");
            client.printData();
    
            client.setData("second", "2");
            client.printData();
        }
    }
    
    /*
    # java CompositeEntityPatternDemo
    data = first
    data = 1
    data = second
    data = 2
    
    */

    参考:http://www.runoob.com/design-pattern/composite-entity-pattern.html

  • 相关阅读:
    穿出不一样的自己,做自己的高级定制服装师_豆瓣
    微信公众帐号开发。大家是用框架还是自己写的流程。现在遇到若干问题。请教各路大仙
    (Pre sell) ZOPO ZP998 (C2 II) 5.5 inch smart phone True Octa Core MTK6592 1920X1080 FHD screen 401 ppi 2GB/32GB 14.0Mp camera-in Mobile Phones from Electronics on Aliexpress.com
    内秀_百度百科
    Boost正则表达式库regex常用search和match示例
    怎样学习使用libiconv库
    libiconv_百度百科
    c++
    解决Boost.Regex对中文支持不好的问题
    毛料西服缩水了怎么办?_百度知道
  • 原文地址:https://www.cnblogs.com/hellokitty2/p/10745357.html
Copyright © 2011-2022 走看看