当使用一个对象作为字段(关联)与方法参数(依赖)作为另一个对象的内部时

when use one object as a field(association) vs method parameter(dependancy) as inside of another object

在 UML class 图中,关联是比依赖关系更强的关系,

关联和依赖可以实现如下:

关联 --> A 有一个 B 对象(作为成员变量)

public class A {
    private B b;
    A(B b){
        this.b= b;
    }
    public void myMethod() {
        b.callMethod();
    }
}

依赖 --> A 引用 B(作为方法参数或 return 类型)

public class A {

public void myMethod(B b) {
    b.callMethod();
}

}

在上面的示例中调用 b.callMethod() 可以使用关联或依赖来实现

我想知道何时使用其中一种方法:

p.s - 任何例子都非常受欢迎:)

让我们看一下打印机的例子:

public class Printer {

   private Paper paper;
   private Inks inks;

   Printer(Paper paper, Inks inks){
      this.paper = paper;
      this.inks = inks;
   }

   public PrintedFile print(PDFFile pdfFile){
     // print PDFFile to paper
   }
}

关联(打印机有...)(aggregation/composition): 1)纸 2) 油墨

依赖性: 1) PDF文件(Pdf文件不是打印机的一部分,打印机只是用它...)

总结:如果对象A应该有对象B作为其内部的一部分,这就是关联。如果对象 A 只使用对象 B,而对象 B 不是对象 A 的一部分,则它是依赖关系。

你只为你打算在任何一个连接的 class 中引入一个拥有的 属性 的协会建模。如果不是这种情况,并且您只在参数中引用另一个 class,那么您将使用依赖项。在建模过程中,您通常从一个简单的关联或一个特别的依赖关系开始。这是因为你感受到了两者之间的约束力。一个普通的(最终定向的)关联是 属性 的第一个迹象。在稍后的设计阶段,您将命名角色并添加多重性(因此删除方向箭头,因为方向现在已通过角色名称用法明确)。最后放置点以表明角色名称应实现为 owned 属性。依赖关系更像是一个可选的东西,比如 "also look here"。它只是有助于导航到正确的位置,但您不会为其创建任何 属性。