kompozycja a wstrzykiwanie zależności

0

Czy jeśli tworzę klasę Samochód to np obiekt typu koło zadeklarować go jako kompozycję a stworzyć go po przez wstrzykiwanie zależności ? Tak to się robi według prawidłowych technik programowania obiektowego ?

0

To zależy co w ten sposób chcesz zamodelować. Inaczej będzie w grze, inaczej w systemie sprzedaży.

0

Możesz to rozwinąć ? Chodzi mi o przykład jaki podałem w pierwszym poście.

0

Takie obiekty najlepiej tworzyć w taki sposób, żeby posługiwać się tylko interfejsami. Także masz w klasie samochód coś takiego:

class Car
{
  List<IWheel> wheels = new List<IWheel>();
}

Tutaj założyłem, że koła trzymasz w liście.

Najlepiej jest tworzyć takie koła za pomocą konstruktora. W taki sposób:

public Car(List<IWheel> wheels)
{
    foreach(IWheel w in wheels)
        this.wheels.Add(w);
}

Jest to rozwiązanie idealne z punktu widzenia prawidłowych technik programowania obiektowego. Dzięki temu Twoja klasa Car nie jest w ogóle zależna od jakiejkolwiek implementacji innych klas. W tym np. fabryki kół:

public Car()
{
    this.wheels = WheelFactory.Instance.CreateWheels(4, CarWheel);
}

W tym przypadku Twoja klasa jest zależna od fabryki - czyli pojawia się zależność z inną klasą. To jest częsty błąd przy projektowaniu DI.

Dlatego pomysł z kołami przekazywanymi w konstruktorze jest idealny z punktu widzenia techniki programowania obiektowego - czyli to, o co pytasz.

Natomiast zapewne istnieją sytuacje, w których taki sposób tworzenia (parametry w konstruktorze) nie będzie idealny dla danego rozwiązania.

1 użytkowników online, w tym zalogowanych: 0, gości: 1