Dependency Injection and Aggregation / Association

In both associations and aggregations, one class maintains a reference to another class.

Then, if constructor injection involves composition? Following the same logic, is it safe to say that setter injection leads to association rather than aggregation?

+3
source share
2 answers

Aggregation is just another representation of the association. Thus, setter injection leads to association and aggregation - just like constructor injection.

, , , , .

+2

java-, 2 3, .

0..1 - 0..1 :

public class Class2 {

    private Class3 class3;

    public Class3 getClass3() {
        return class3;
    }

    public void setClass3(Class3 class3) {
        this.class3 = class3;
    }
}

3 - , 2.

, , , , , :

public class **Class2** {

    private Class3 class3;

1 :

import java.util.Collection;
import java.util.Iterator;

public class Class2 {
    private Collection<Class3> class3 = null;

    public Collection<Class3> getClass3() {
        return class3;
    }

    public Iterator<Class3> class3Iterator() {
        return class3.iterator();
    }

    public boolean isClass3Empty() {
        return class3.isEmpty();
    }

    public boolean containsClass3(Class3 class3) {
        return this.class3.contains(class3);
    }

    public boolean containsAllClass3(Collection<Class3> class3) {
        return this.class3.containsAll(class3);
    }

    public int class3Size() {
        return class3.size();
    }

    public Class3[] class3ToArray() {
        return class3.toArray(new Class3[class3.size()]);
    }

    public void setClass3(Collection<Class3> class3) {
        this.class3 = class3;
    }

    public boolean addClass3(Class3 class3) {
        return this.class3.add(class3);
    }

    public boolean removeClass3(Class3 class3) {
        return this.class3.remove(class3);
    }

    public void clearClass3() {
        this.class3.clear();
    }
}

public class Class3 {

    private Class2 class2 = null;

    public Class2 getClass2() {
        return class2;
    }

    public void setClass2(Class2 class2) {
        this.class2 = class2;
    }
}

,

0

Source: https://habr.com/ru/post/1736795/


All Articles