• 组合实体模式


    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

  • 相关阅读:
    springboot 整合 pagehelper
    Linux maven安装
    linux 查看端口状态
    mysql执行顺序
    Java int/int 保留2位小数
    【每日一题】30.储物点的距离 (区间处理,前缀和/线段树//树状数组)
    【每日一题】29.maze (BFS 进阶)
    2016年第七届 蓝桥杯C组 C/C++决赛题解
    2016年第七届 蓝桥杯A组 C/C++决赛题解
    第六届蓝桥杯C++A组 A~F题题解
  • 原文地址:https://www.cnblogs.com/hellokitty2/p/10745357.html
Copyright © 2020-2023  润新知