java设计模式之组合实体模式 比眉伴天荒 2022-12-23 06:58 33阅读 0赞 组合实体模式(Composite Entity Pattern)用在EJB持久化机制中。一个组合实体是一个EJB实体bean,代表了对象的图解。当更新一个组合实体时,内部依赖对象beans会自动更新,因为它们是有EJB实体bean管理的。一下是组合实体bean的参与者。 * 组合实体(Composite Entity)-它是主要的实体bean。它可以是粗颗粒的,或者包含一个粗粒度对象,用于持续声明周期。 * 粗粒度对象(Coarse-Grained Object)-该对象包含依赖对象。它有自己的生命周期,也能管理依赖对象的声明周期。 * 依赖对象(Dependent Object)-依赖对象是一个持续生命周期依赖于粗粒度对象的对象。 * 策略(Strategies)-策略表示如何实现组合实体。 **实现:** 创建作为组合实体的CompositeEntity对象。CoarseGrainedObject是一个包含依赖对象的类。CompositeEntityPatternDemo类使用Client类来演示组合实体模式的用法。 ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpX3dfY2g_size_16_color_FFFFFF_t_70][] **创建依赖对象:** //创建依赖对象 public class DependentObject1 { private String data; public void setData(String data){ this.data = data; } public String getData(){ return data; } } //创建依赖对象 public class DependentObject2 { private String data; public void setData(String data){ this.data = data; } public String getData(){ return data; } } **创建粗粒度对象:** //创建粗粒度对象 public class CoarseGrainedObject { DependentObject1 dependentObject1 = new DependentObject1(); DependentObject2 dependentObject2 = new DependentObject2(); public void setData(String data1,String data2){ dependentObject1.setData(data1); dependentObject2.setData(data2); } public String[] getData(){ return new String[]{dependentObject1.getData(),dependentObject2.getData()}; } } **创建组合实体:** //创建组合实体 public class CompositeEntity { private CoarseGrainedObject coarseGrainedObject = new CoarseGrainedObject(); public void setData(String data1,String data2){ coarseGrainedObject.setData(data1,data2); } public String[] getData(){ return coarseGrainedObject.getData(); } } **创建使用组合实体的客户端类:** //创建使用组合实体的客户端类 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); } } **演示组合实体设计模式的用法:** public class CompositeEntityPatternDemo { public static void main(String[] args){ Client client = new Client(); client.setData("Test","Data"); client.printData(); client.setData("Second test","Data2"); client.printData(); } } **执行程序,输出结果:** Data:Test Data:Data Data:Second test Data:Data2 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpX3dfY2g_size_16_color_FFFFFF_t_70]: /images/20221120/2869986934ca4f68857bccad02dcb914.png
还没有评论,来说两句吧...