- Jakie są podstawowe zasady i siły motywujące tył modelu partii?
Do tego stopnia, że używałem go, to głównie o kodzie ponownego użycia i elastyczność. Używaliśmy go wcześniej w modelu gość/użytkownik/admin i na pewno okazuje się on przydatny, gdy trzeba przenieść użytkownika z jednej grupy do drugiej. Poszerz to, aby organizacje i firmy były reprezentowane przez użytkowników pod nimi, a to naprawdę zapewnia formę abstrakcji, która nie jest szczególnie związana z SQL.
- Co to znaczy, że robisz to w swoim modelu danych? (Mój nieco wyżej jest dość wysoki poziom i całkiem prawdopodobnie niepoprawny w pewien sposób. Byłem w projekcie , który go używał, ale byłem pracujący z oddzielnym zespołem skupiającym w innych kwestiach).
Jesteś całkiem słusznie wiertła powyżej, choć potrzebuje trochę więcej szczegółów. Można sobie wyobrazić sytuację, w której podmiot znajdujący się w bazie danych (nazywany Stroną) zleca innej stronie, która z kolei może zlecić podwykonawstwo. Stroną może być Pracownik, Wykonawca lub Firma, wszystkie podklasy Partii. Z mojego zrozumienia wynika, że posiadasz tabelę Partii, a następnie bardziej szczegółowe tabele dla każdej podklasy, które następnie mogą być dalej klasyfikowane (Party -> Person -> Contractor).
- Jakie są twoje wrażenia z tego powodu? Czy używałeś go, a jeśli tak, czy zrobiłbyś to ponownie? Jakie były plusy i minusy?
Ma swoje zalety, jeśli trzeba elastycznie, aby dodać nowe typy do systemu i tworzenia relacji między typami, że nie spodziewałem się na początku i architekt (użytkowników poruszających się na nowy poziom, firmy wynajmu inne firmy itd.). Daje także korzyści z prowadzenia pojedynczego zapytania i pobierania danych dla wielu typów stron (firm, pracowników, wykonawców). Z drugiej strony, dodajesz dodatkowe warstwy abstrakcji, aby dostać się do danych, których faktycznie potrzebujesz i zwiększasz obciążenie (lub przynajmniej liczbę połączeń) w bazie danych, gdy szukasz konkretnego typu. Jeśli twoja abstrakcja posuwa się zbyt daleko, prawdopodobnie będziesz musiał uruchomić wiele zapytań w celu pobrania danych, ponieważ złożoność zaczyna być szkodliwa dla czytelności i obciążenia bazy danych.
- Czy model party ograniczył wybór ORMów? Na przykład, czy musiałeś wyeliminować pewne ORM, ponieważ nie pozwoliły na wystarczającą liczbę "warstwy abstrakcji" pomiędzy Twoimi obiektami domeny a modelem fizycznym modelu ?
Jest to obszar, że jestem wprawdzie nieco słaby, ale uznaliśmy, że przy użyciu widoków i lustrzaną abstrakcja w warstwie aplikacji nie uczyniły to zbyt wielkim problemem. Prawdziwym problemem dla mnie zawsze było "gdzie jest fragment X życia", kiedy chcę bezpośrednio odczytać źródło danych (nie jest to zawsze intuicyjne dla nowych programistów w systemie).
Fantastyczna odpowiedź. Dzięki. Kiedy mówisz "odbicie lustrzane w warstwie aplikacji", masz na myśli, że twoje obiekty domeny również podążały za wzorem modelu partyjnego? –
Tak, co oznacza również, że musisz zasadniczo pisać logikę w 2 miejscach, co powoduje oczywiste problemy z synchronizacją. Jednak stopień wykorzystania ORM przez inną firmę jest bardzo ograniczony (choć często korzystałem z własnych narzędzi ORM) –