Wie ist die Beziehung zwischen PersistentSet und ThirdPartyPersistentSet im Einzelnen?
Die Vollraute <|>-----> ist Composition
("hat ein"), wobei die "Teile" zerstört werden, wenn das "Ganze" zerstört wird. In der Abbildung unten, wenn Sie ein Auto zerstören, zerstören Sie den Vergaser.
Die leere Raute < >-----> ist Aggregation
("hat ein"), wobei die "Teile" möglicherweise nicht zerstört werden, wenn das "Ganze" zerstört wird. In der Abbildung unten werden bei der Zerstörung eines Teichs nicht unbedingt die Enten zerstört (sie ziehen in einen anderen Teich, wenn sie klug sind).
![Composition]()
(Quelle: <a href="http://upload.wikimedia.org/wikipedia/en/thumb/9/9f/AggregationAndComposition.svg/220px-AggregationAndComposition.svg.png" rel="nofollow noreferrer">wikimedia.org </a>)
Wie ist die Beziehung zwischen PersistentObject und ThirdPartyPersistentSet?
Dies ist ein Abhängigkeitsverhältnis. Siehe meine Antwort aquí für weitere Informationen.
Wann also wird aus einer Abhängigkeitsbeziehung eine Assoziationsbeziehung, wenn man die Parameterübergabe nutzt?
Wenn Sie den Parameter lokal speichern, wird er von einer Abhängigkeitsbeziehung zu einer Assoziationsbeziehung. Wenn Sie den Parameter nur lokal verwenden, bleibt er ein Abhängigkeitsverhältnis.
C# Code Beispiel:
// Association
public class ThirdPartyPersistentSet
{
private PersistentObject _object;
public ThirdPartyPersistentSet(PersistentObject obj)
{
_object = obj; // Store it to a local variable.
// Now ThirdPartyPersistentSet 'knows' about
// the PersistentObject.
}
}
// Dependency
public class ThirdPartyPersistentSet
{
public ThirdPartyPersistentSet(PersistentObject obj)
{
obj.GetSomething(); // Do something with obj,
// but do not store it to a local variable.
// You only 'use' it and ThirdPartyPersistentSet
// does not 'know' about it.
}
}