28) Composite Entity pattern

发布时间 2023-06-16 17:04:00作者: zno2

类别:

 

问题:

Core J2EE Patterns - Composite Entity

 http://www.oracle.com/technetwork/java/compositeentity-141992.html

方案:

 

示例:

public class CompositeEntitypatternDemo {

    public static void main(String[] args) {
        Client client = new Client();
        client.setData("1", "2");
        client.printData();
        client.setData("a", "b");
        client.printData();
    }

}

class DependentObject1 {
    private String data;

    public void setData(String data) {
        this.data = data;
    }

    public String getData() {
        return data;
    }
}

class DependentObject2 {
    private String data;

    public void setData(String data) {
        this.data = data;
    }

    public String getData() {
        return data;
    }
}

// [kɔːs] 粗糙的
// [ɡreɪnd] 粗糙的
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() };
    }
}

class CompositeEntity {
    private CoarseGrainedObject cgo = new CoarseGrainedObject();

    public void setData(String data1, String data2) {
        cgo.setData(data1, data2);
    }

    public String[] getData() {
        return cgo.getData();
    }
}

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);
    }
}

 

Data: 1
Data: 2
Data: a
Data: b

 

应用:

 

不足:(

 

优化:)