[Symfony][SF2][Symfony2]Separacja kodu serwisów od komponentów frameworka |
[Symfony][SF2][Symfony2]Separacja kodu serwisów od komponentów frameworka |
10.01.2017, 05:33:02
Post
#1
|
|
Grupa: Zarejestrowani Postów: 602 Pomógł: 30 Dołączył: 1.08.2007 Skąd: Nowy Sącz Ostrzeżenie: (0%) |
Hej, mam taki problem:
Piszę kalkulator do obliczeń danych finansowych na podstawie różnych kryteriów np.: miejscowości, rodzaje zatrudnienia, wielkośc firmy itp... Mam taka strukturę
CalculatorService posiada metodę compute() która poprzez fabrykę tworzy klasy kalkulatorów dla kolejnych kryteriów i po kolei je uruchamia. i teraz mam problem, niektóre kryteria wymagają słowników pobranych z BD, np miejscowości, bo jest ich kilka tysięcy, niektóre natomiast mają słowniki zahardcodowane w kodzie, bo słownik rodzajów zatrudnienia to raptem 4 elementowa tablica. I jak przekazywać te słowniki? Zrobić w interfejsie metodę setDictionary albo wstrzykiwać jako zależnośc konstruktora? Myślałem, żeby te klasy które mają słowniki wklepane w kodzie trzymały je w sobie, ale znowu wprowadzi to zamęt bo część słowników będzie przekazywana a częśc zakodowana w klasach. Mam jeszcze jedno rozwiązanie, stworzyć osobny serwis np SomeCalculatorDictionaryResolver z metodą getDictionary(TYPE): array; Co wybyście w takiej sytuacji zrobili? Ten post edytował daniel1302 10.01.2017, 05:33:28 |
|
|
10.01.2017, 08:45:35
Post
#2
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%) |
A czemu kalkulatory same w sobie nie mogą być usługami zdefiniowanymi w konfiguracji kontenera?
Cytat CalculatorService posiada metodę compute() która poprzez fabrykę tworzy klasy kalkulatorów dla kolejnych kryteriów i po kolei je uruchamia. Tą samą fabryką tworzysz obiekty różnych klas? Zły pomysł.Cytat Zrobić w interfejsie metodę setDictionary albo wstrzykiwać jako zależnośc konstruktora? setDictionary to kiepski pomysł, bo zmuszasz klasy implementujące interface do posiadania słowników (inaczej złamiesz zasadę interface segregation).
|
|
|
10.01.2017, 09:00:17
Post
#3
|
|
Grupa: Zarejestrowani Postów: 602 Pomógł: 30 Dołączył: 1.08.2007 Skąd: Nowy Sącz Ostrzeżenie: (0%) |
Obiekty różnych klas, lecz tego samego interfejsu SomeCalculatorInterface
Te słowniki to faktycznie chyba zrobię osobną klase słownika i klasy będą korzystać z tej klasy. Ten post edytował daniel1302 10.01.2017, 09:04:49 |
|
|
Wersja Lo-Fi | Aktualny czas: 18.04.2024 - 19:50 |