组合实体模式包含以下主要角色:
1. 组合实体(Composite Entity): 定义了一个粗粒度的对象,包含多个较小的对象,这些对象称为子对象。组合实体负责将子对象组合在一起,并提供对它们的操作。
2. 子对象(Dependent Objects): 组成组合实体的较小对象,负责实际的业务逻辑和状态。
3. 客户端(Client): 通过组合实体访问和操作子对象。
4. 策略(Strategies): 一组策略类,用于定义子对象的具体行为。
下面是一个简单的组合实体模式的示例:
// 子对象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;
}
}
// 组合实体
class CompositeEntity {
private DependentObject1 dependentObject1 = new DependentObject1();
private 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()};
}
}
// 策略
class Client {
private CompositeEntity compositeEntity = new CompositeEntity();
public void setData(String data1, String data2) {
compositeEntity.setData(data1, data2);
}
public void printData() {
String[] data = compositeEntity.getData();
System.out.println("Data 1: " + data[0]);
System.out.println("Data 2: " + data[1]);
}
}
// 使用示例
public class Main {
public static void main(String[] args) {
Client client = new Client();
client.setData("Hello", "World");
client.printData();
}
}
在这个示例中,CompositeEntity包含了两个子对象DependentObject1和DependentObject2,并提供了对它们的操作。Client通过CompositeEntity来访问和操作这两个子对象,而不需要直接与它们交互。这样的设计可以隐藏对象之间的复杂性,提高系统的可维护性和灵活性。
转载请注明出处:http://www.zyzy.cn/article/detail/11865/设计模式