Pytania otagowane jako object-oriented

Metodologia umożliwiająca modelowanie systemu jako zestawu obiektów, które można kontrolować i manipulować w sposób modułowy

1
Czy nadużywamy metod statycznych?
Kilka miesięcy temu zacząłem pracować nad nowym projektem, a kiedy przejrzałem kod, uderzyło mnie ilość użytych metod statycznych. collectionToCsvString(Collection<E> elements)Przechowuje się w nich nie tylko metody użytkowe , ale także mnóstwo logiki biznesowej. Kiedy zapytałem faceta odpowiedzialnego za uzasadnienie tego, powiedział, że to sposób na ucieczkę od tyranii Springa . …


3
Dlaczego potrzebujesz „siebie”. w Pythonie, aby odwoływać się do zmiennych instancji?
Programuję w wielu językach, takich jak Java, Ruby, Haskell i Python. Muszę przełączać się między wieloma językami dziennie z powodu różnych projektów, nad którymi pracuję. Problem polega na tym, że często zapominam pisać selfjako pierwszy parametr w definicjach funkcji w Pythonie tak samo, jak w przypadku wywoływania metod na tym …

3
Skład zamiast dziedziczenia, ale
Próbuję nauczyć się inżynierii oprogramowania i napotykam sprzeczne informacje, które mnie dezorientują. Uczyłem się OOP i czym są abstrakcyjne klasy / interfejsy i jak z nich korzystać, ale potem czytam, że należy „preferować kompozycję zamiast dziedziczenia”. Rozumiem, że skład ma miejsce, gdy jedna klasa tworzy / tworzy obiekt innej klasy …

8
Czy interfejs ujawniający funkcje asynchroniczne jest nieszczelną abstrakcją?
Czytam książkę Zasady, praktyki i wzorce wstrzykiwania zależności i czytam o koncepcji nieszczelnej abstrakcji, która jest dobrze opisana w książce. Obecnie refaktoryzuję bazę kodu C # przy użyciu wstrzykiwania zależności, aby zamiast blokowania były używane wywołania asynchroniczne. W tym celu rozważam interfejsy, które reprezentują abstrakcje w mojej bazie kodu i …

2
Czy w usłudze DDD usługa domenowa jest w zasadzie tylko wzorem fasady i / lub mediatora?
W projektowaniu opartym na domenach warstwa domeny może mieć kilka (tradycyjnych) usług. Na przykład w domenie użytkownika możemy mieć: UserFactory, który buduje obiekty użytkownika na różne sposoby UserRepository, które jest odpowiedzialne za interakcję z usługami przetrwania w warstwie infrastruktury Czy usługa użytkownika w warstwie domen jest po prostu mediatorem i …


1
Używanie klas znajomych do enkapsulacji funkcji prywatnych członków w C ++ - dobra praktyka czy nadużycie?
Zauważyłem więc, że można uniknąć umieszczania funkcji prywatnych w nagłówkach, wykonując coś takiego: // In file pred_list.h: class PredicateList { int somePrivateField; friend class PredicateList_HelperFunctions; public: bool match(); } // In file pred_list.cpp: class PredicateList_HelperFunctions { static bool fullMatch(PredicateList& p) { return p.somePrivateField == 5; // or whatever } } …

6
DDD spełnia OOP: jak zaimplementować repozytorium obiektowe?
Typowa implementacja repozytorium DDD nie wygląda zbyt dobrze, na przykład save()metoda: package com.example.domain; public class Product { /* public attributes for brevity */ public String name; public Double price; } public interface ProductRepo { void save(Product product); } Część infrastruktury: package com.example.infrastructure; // imports... public class JdbcProductRepo implements ProductRepo { …

4
struct z bezsensowną wartością domyślną
W moim systemie często działają z kodami Airport ( "YYZ", "LAX", "SFO", itp), są one zawsze dokładnie w tym samym formacie (3 litery, reprezentowane jako wielkie litery). System zazwyczaj zajmuje się 25-50 z tych (różnych) kodów na każde żądanie API, z sumą ponad tysiąca alokacji, są one przekazywane przez wiele …





6
Jak uniknąć downcastingu?
Moje pytanie dotyczy specjalnego przypadku superklasy Animal. Moja Animalpuszka moveForward()i eat(). Sealrozszerza się Animal. Dogrozszerza się Animal. I jest specjalne stworzenie, które rozszerza także Animaltzw Human. Humanimplementuje również metodę speak()(nie zaimplementowaną przez Animal). W implementacji metody abstrakcyjnej, która akceptuje Animal, chciałbym użyć tej speak()metody. To nie wydaje się możliwe bez …

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.