Dependency injection 依赖注入和聚合/关联
在关联和聚合中,一个类维护对另一个类的引用 那么,构造函数注入意味着合成吗?Dependency injection 依赖注入和聚合/关联,dependency-injection,associations,aggregation,uml,Dependency Injection,Associations,Aggregation,Uml,在关联和聚合中,一个类维护对另一个类的引用 那么,构造函数注入意味着合成吗? 按照同样的逻辑,可以安全地说setter注入导致关联而不是聚合吗?聚合只是关联的另一种表示形式。所以setter注入导致了关联和聚合——构造函数注入也是如此 构造器注入是否意味着组合是有争议的,因为根据对组合的严格解释,类本身必须对复合类的构造和破坏负责 在java代码级别,如果您有类2和类3,那么这就是预期的代码 传统关联0..1到0..1给出以下代码: public class Class2 { priv
按照同样的逻辑,可以安全地说setter注入导致关联而不是聚合吗?聚合只是关联的另一种表示形式。所以setter注入导致了关联和聚合——构造函数注入也是如此
构造器注入是否意味着组合是有争议的,因为根据对组合的严格解释,类本身必须对复合类的构造和破坏负责 在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;
}
}
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;
}
}
类别3与类别2的代码相同
请注意,关联与属性相关,而与方法无关,因此,如果我们决定不使用访问器,则代码仅为:
public class **Class2** {
private Class3 class3;
聚合1到多给出以下代码:
public class Class2 {
private Class3 class3;
public Class3 getClass3() {
return class3;
}
public void setClass3(Class3 class3) {
this.class3 = class3;
}
}
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;
}
}
import java.util.Collection;
导入java.util.Iterator;
公共课2{
私有集合class3=null;
公共集合getClass3(){
返回类3;
}
公共迭代器class3Iterator(){
返回class3.iterator();
}
公共布尔值isClass3Empty(){
return class3.isEmpty();
}
公共布尔容器Class3(Class3 Class3){
返回this.class3.contains(class3);
}
公共类3(集合类3){
返回此.class3.containsAll(class3);
}
public int class3Size(){
返回class3.size();
}
公共类3[]类3目录(){
返回class3.toArray(新的class3[class3.size()]);
}
公共无效集合类别3(集合类别3){
这个.class3=class3;
}
公共布尔addClass3(Class3 Class3){
返回此.class3.add(class3);
}
公共布尔removeClass3(Class3 Class3){
返回此.class3.remove(class3);
}
公共无效clearClass3(){
这个.class3.clear();
}
}
公共班级3{
私有类2 Class2=null;
公共类2 getClass2(){
返回类2;
}
公共无效集合Class2(Class2 Class2){
this.class2=class2;
}
}
希望这有帮助