二十八、组合实体模式
组合实体模式(Composite Entity Pattern),用于EJB持久化机制中。一个组合实体就是一个EJB的bean,代表了对象的图解,当更新一个组合实体时,内部依赖对象beans会自动更新。
实现
创建一个组合实体类CompositeEntity
,和一个包含依赖对象的类CoarseGrainedObject
。
创建依赖对象类
DependentObject1.java
/** * Created by lenovo on 2016/12/12 0012. * 依赖类 */ public class DependentObject1 { private String data; public String getData() { return data; } public void setData(String data) { this.data = data; } }
DependentObject2.java
/** * Created by lenovo on 2016/12/12 0012. * 依赖类 */ public class DependentObject2 { private String data; public String getData() { return data; } public void setData(String data) { this.data = data; } }
创建粗粒度对象类
CoarseGrainedObject.java
/** * Created by lenovo on 2016/12/12 0012. */ 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()}; } }
创建组合实体类
CompositeEntity.java
/** * Created by lenovo on 2016/12/12 0012. * 组合实体类 */ 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(); } }
创建调用类
Client.java
/** * Created by lenovo on 2016/12/12 0012. * 使用组合实体类的客户端类 */ public class Client { private CompositeEntity compositeEntity = new CompositeEntity(); public void printData() { for (String s : compositeEntity.getData()) { System.out.println("Data: " + s); } } public void setData(String data1, String data2) { compositeEntity.setData(data1, data2); } }
演示
CompositeEntityPatternDemo.java
/** * Created by lenovo on 2016/12/12 0012. * 演示 */ public class CompositeEntityPatternDemo { public static void main(String[] args) { Client client = new Client(); client.setData("test", "data"); client.printData(); client.setData("222", "666"); client.printData(); } }
输出
Data: test Data: data Data: 222 Data: 666