Шаблоны проектирования - шаблон составного объекта
Шаблон Composite Entity используется в механизме сохранения EJB. Составной объект - это объектный компонент EJB, который представляет граф объектов. Когда составной объект обновляется, внутренне зависимые объекты bean обновляются автоматически как управляемые объектным bean EJB. Ниже приведены участники Composite Entity Bean.
Composite Entity- Это первичный объектный компонент. Он может быть крупнозернистым или может содержать крупнозернистый объект для использования в целях сохранения.
Coarse-Grained Object- Этот объект содержит зависимые объекты. Он имеет собственный жизненный цикл, а также управляет жизненным циклом зависимых объектов.
Dependent Object - Зависимый объект - это объект, жизненный цикл которого зависит от объекта общего назначения.
Strategies - Стратегии представляют, как реализовать составную сущность.
Реализация
Мы собираемся создать объект CompositeEntity, действующий как CompositeEntity. CoarseGrainedObject будет классом, который содержит зависимые объекты. CompositeEntityPatternDemo , наш демонстрационный класс будет использовать класс Client для демонстрации использования шаблона Composite Entity.
Шаг 1
Создать зависимые объекты.
DependentObject1.java
public class DependentObject1 {
private String data;
public void setData(String data){
this.data = data;
}
public String getData(){
return data;
}
}
DependentObject2.java
public class DependentObject2 {
private String data;
public void setData(String data){
this.data = data;
}
public String getData(){
return data;
}
}
Шаг 2
Создайте крупнозернистый объект.
CoarseGrainedObject.java
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()};
}
}
Шаг 3
Создать составную сущность.
CompositeEntity.java
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();
}
}
Шаг 4
Создайте класс Client для использования Composite Entity.
Client.java
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);
}
}
Шаг 5
Используйте клиент, чтобы продемонстрировать использование шаблона проектирования Composite Entity.
CompositeEntityPatternDemo.java
public class CompositeEntityPatternDemo {
public static void main(String[] args) {
Client client = new Client();
client.setData("Test", "Data");
client.printData();
client.setData("Second Test", "Data1");
client.printData();
}
}
Шаг 6
Проверьте вывод.
Data: Test
Data: Data
Data: Second Test
Data: Data1