Wstrzykiwanie zależności, to wzorzec projektowy, w którym zależności (wystąpienia obiektów, właściwości) komponentu są ustawiane za pomocą konstruktora (ów), metod lub pól (właściwości). Jest to specjalna forma bardziej ogólnej inwersji zależności.
Przeprowadziłem dzisiaj interesującą dyskusję z innym programistą na temat tego, jak podejść do klasy za pomocą metody, która akceptuje ciąg i ciąg wyjściowy. Wyobraź sobie coś takiego, co zostało w całości wykonane na potrzeby przykładu public string GetStringPart(string input) { //Some input validation which is removed for clarity if(input.Length > …
Istnieje wiele powodów, dla których globale są złe w OOP. Jeśli liczba lub rozmiar obiektów wymagających współdzielenia jest zbyt duża, aby można je było efektywnie przekazać w parametrach funkcji, zwykle wszyscy zalecają Wstrzykiwanie zależności zamiast obiektu globalnego. Jednak w przypadku, gdy prawie wszyscy muszą wiedzieć o pewnej strukturze danych, dlaczego …
Czytam „Dependency Injection in .NET” Mark Seemann (jest fantastyczny i musi mieć), a autor często używa słowa „szew”. Ale nie rozumiem, co to znaczy. Oto przykład użycia tego słowa: Rozdział 7 wyjaśnia, jak komponować obiekty w różnych konkretnych ramach, takich jak ASP.NET MVC, WPF, WCF i tak dalej. Nie wszystkie …
Anemiczne modelu domeny jest opisany jako anty-wzorzec w domenie napędzane projektu Martin Fowler. Aby mieć logikę biznesową w modelach domen, często używa się usług domenowych. Ale wprowadzanie usług domenowych do modeli domen jest uważane za szkodliwe przez Vaughna Vernona (patrz „Wdrażanie projektowania opartego na domenie, Strona 387). Moim zdaniem opinie …
Dobry programista, z którym współpracuję, powiedział mi ostatnio o trudnościach we wdrażaniu funkcji w odziedziczonym przez nas kodzie; powiedział, że problemem jest to, że kod jest trudny do przestrzegania. Po tym zagłębiłem się w produkt i zdałem sobie sprawę, jak trudno było zobaczyć ścieżkę kodu. Używał tak wielu interfejsów i …
Niezależnie od popularności, czy istnieją jakieś dowody empiryczne, które pokazują, że wstrzykiwanie zależności (i / lub użycie kontenera DI) pomaga, powiedzmy, w zmniejszeniu liczby błędów, poprawie łatwości konserwacji lub zwiększeniu prędkości opracowywania rzeczywistych projektów oprogramowania?
Użyłem różnych kontenerów IoC (Castle.Windsor, Autofac, MEF itp.) Dla .Net w wielu projektach. Zauważyłem, że są one często nadużywane i zachęcają do wielu złych praktyk. Czy istnieją jakieś ustalone praktyki dotyczące korzystania z kontenerów IoC, szczególnie w przypadku zapewniania platformy / platformy? Moim celem jako twórcy frameworku jest uczynienie kodu …
Biorąc pod uwagę konstruktor, który nigdy nie będzie musiał używać różnych implementacji kilku obiektów, które inicjuje, czy nadal jest praktyczne stosowanie DI? W końcu nadal możemy chcieć przeprowadzić test jednostkowy. Klasa, o której mowa, inicjuje kilka innych klas w swoim konstruktorze, a klasy, których używa, są dość specyficzne. Nigdy nie …
Podejrzewam, że popełniłem tutaj błąd ucznia i szukam wyjaśnienia. Wiele klas w moim rozwiązaniu (C #) - śmiem twierdzić, że większość - skończyłem pisać odpowiedni interfejs. Np. Interfejs „ICalculator” i klasa „Calculator”, która go implementuje, nawet jeśli nigdy nie zastąpię tego kalkulatora inną implementacją. Ponadto większość z tych klas znajduje …
Natknąłem się na przemówienie Grega Younga 7 powodów, dla których projekty DDD zawiodły, kiedy wspomina coś, co nazywa DDD-Lite o 7:20. Podsumowując, w zasadzie mówi, że niektórzy używają DDD jako języków wzorcowych (bytów, repozytoriów, obiektów wartości, usług itp.) Bez robienia czegokolwiek innego związanego z DDD. Postuluje, że 60% lub więcej …
Powiedzmy, że mam klasę, Foobarktóra używa (zależy od) klasy Widget. W Widgetdawnych czasach wolud może być zadeklarowany jako pole Foobar, a może jako inteligentny wskaźnik, jeśli zachodzi potrzeba zachowania polimorficznego, i zostanie zainicjowany w konstruktorze: class Foobar { Widget widget; public: Foobar() : widget(blah blah blah) {} // or std::unique_ptr<Widget> …
Przepraszam, jeśli wydaje się to kolejną powtórką pytania, ale za każdym razem, gdy znajduję artykuł na ten temat, głównie mówi on o tym, czym jest DI. Tak, dostaję DI, ale staram się zrozumieć potrzebę kontenera IoC, do którego wszyscy chyba się pakują. Czy celem kontenera IoC jest po prostu „automatyczne …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.