2011-08-20 1 views
0

Если у меня есть класс «Foo», который содержит экземпляр «Delegate». Метод делегатов Foo призывает к классу «Делегат» как так:Отношение зависимости UML - следует ли использовать его здесь?

public class Foo { 
    private Delegate delegate = new Delegate(); 

    public void bar() { 
     delegate.bar(); 
    } 
} 

Когда я рисую класс Foo в UML, будет ли это иметь иждивенческие (пунктирная линия с наконечником) между ним и классом делегата, или будет у него есть линия, представляющая связь композиции?

ответ

1

Приятная вещь в UML заключается в том, что у вас есть некоторая свобода действий, но в вашем случае ИМХО, зависимость лучше.

Вы не имеете delegate как свойство Foo (нет getDelegate), так что никто, глядя на вашу систему не будет действительно заботиться о том, что Foo состоит из делегата (среди прочего).

Опять же, если ваша UML-диаграмма была предоставлена ​​инструменту, который генерировал бы код из диаграммы, он мог бы. :)

Делайте то, что чувствует себя правильно для людей (или агентов), которым вы даете диаграмму.

+0

Я бы не использовал отсутствие геттера в качестве сильного индикатора. Мне никогда не нравились зависимости в UML. Основные вещи из OO адекватно охвачены, поэтому я в основном использую их, когда занимаюсь не-OO-моделированием. Но если никто не должен знать, что делает Foo внутри, то я не буду спорить;) – ShiDoiSi

0

В этом случае я буду использовать соотношение композиций. Если вы еще не решили, будет ли Foo содержать экземпляр делегата, то зависимость отношения прекрасна. Но если вы уже приняли это решение, то нет никакой возможности скрывать дополнительную информацию, на самом деле это может ввести в заблуждение (читатель может подумать, что это НЕ сдерживание, если бы оно было, оно было бы показано как таковое) ,

+0

Привет. Я решил, что Foo * будет содержать экземпляр делегата. Так что, должно ли оно оставаться зависимым? Спасибо – Joeblackdev

+0

В этом случае я бы использовал соотношение Композиция. –

Смежные вопросы