Wpis z mikrobloga

@MamCieNaHita: też takie mam wrażenie bo czuję się bezpieczniej XD ale no jak mam coś co tylko raz ma być używane i potrzebuję dostęp do niego z poziomu różnych klas to fajnie gdyby jednak to był singleton niż się pieprzyć i przekazywać ten obiekt dalej i dalej
  • Odpowiedz
@MamCieNaHita: to inaczej. mam sobie klasę silnik, silnik mam tylko jeden w samochodzie. więc chcę mieć tylko jeden silnik, bo fizycznie więcej nie ma. i potrzebuje mieć dostęp do tej instancji silnika w różnych miejscach by wykonywać różne zadania. jak rozwiązać ten problem
  • Odpowiedz
@mapache:
rozwiązanie 1: trzymaj w klasach referencje do obiektu klasy Engine albo IEngine, a wstrzykuj to za pomocą fabryk lub jakiegoś frameworka od DI
rozwiązanie 2: stwórz system wymiany wiadomości między poszczególnymi komponentami(powiedzmy coś w stylu CANa ( ͡º ͜ʖ͡º)), ale to overkill jeżeli aplikacja jest stosunkowo mała
  • Odpowiedz
@SiarczekPotasu: inaczej, sam program już jest samochodem. dosłownie. potrzebuje by różne komponenty miały dostęp do silnika, tego samego silnika, takie jak gamepad czy moduł do autonomicznego hamowania
  • Odpowiedz
@mapache: stwórz sobie klasę Samochód i w niej zawrzyj wszystkie komponenty. Następnie w main tworzysz instancje wszystkiego co trzeba i dopalasz metodę jedź z klasy Samochód, która ma już dostęp do wszystkiego bez singletonów.
  • Odpowiedz
@mapache: poczytaj sobie owzorze dependency injection. W kontenerze sworzysz sobie samochód jako asValue() lub asClass(class).singleton() i sobie potem tego użyjesz w jakiejkolwiek klasie (przekażesz w parametrze przez konstruktor).
  • Odpowiedz
. i potrzebuje mieć dostęp do tej instancji silnika w różnych miejscach by wykonywać różne zadania. jak rozwiązać ten problem


@mapache: to nie jest problem. Robiąc wszystko singletonami tworzysz chmurę obiektów, który każdy działa z każdym. Przekazując jedną instancję w drugą przy użyciu Dependecy Injection np. w konstuktorze masz kontrolę nad tym co od czego zależy. Dodatkowo takie podejście odrazu pokazuje ci wadę designu: zanim będziesz chciał się odwołać do
  • Odpowiedz