Pytania otagowane jako composition

14
Skąd bierze się ta koncepcja „faworyzowania kompozycji nad dziedziczeniem”?
W ciągu ostatnich kilku miesięcy mantra „sprzyjanie kompozycjom nad dziedziczeniem” wydaje się pojawiać znikąd i stać się niemal rodzajem memu w społeczności programistów. I za każdym razem, gdy to widzę, jestem trochę zdziwiony. To tak, jakby ktoś powiedział: „faworyzuj wiertarki nad młotami”. Z mojego doświadczenia wynika, że ​​skład i dziedziczenie …

5
Dlaczego wolę kompozycję niż dziedziczenie?
Zawsze czytam, że kompozycja ma pierwszeństwo przed dziedziczeniem. Blogu na przeciwieństwie rodzaju , na przykład, opowiada się za pomocą kompozycji przez dziedziczenie, ale nie mogę zobaczyć, jak polimorfizm został osiągnięty. Mam jednak wrażenie, że kiedy ludzie mówią, że wolą kompozycję, to tak naprawdę wolą kombinację kompozycji i implementacji interfejsu. Jak …


5
Jak zdefiniowanie, że metodę można zastąpić silniejszym zaangażowaniem, niż zdefiniowanie, że można wywołać metodę?
Od: http://www.artima.com/lejava/articles/designprinciples4.html Erich Gamma: Nadal uważam, że to prawda, nawet po dziesięciu latach. Dziedziczenie to fajny sposób na zmianę zachowania. Wiemy jednak, że jest kruchy, ponieważ podklasa może łatwo przyjmować założenia dotyczące kontekstu, w którym wywoływana jest metoda zastępowana. Istnieje ścisłe powiązanie między klasą podstawową a podklasą z powodu niejawnego …

2
Co oznacza „nie komponuje”?
Widzę wiele tekstów, zwłaszcza funkcjonalnych tekstów programistycznych, które twierdzą, że niektóre koncepcje CS „nie komponują” . Przykładami są: zamki nie komponują, monady nie komponują. Trudno mi było wyśledzić dokładnie to zdanie. Kiedy myślę o kompozycji, myślę o kompozycji funkcji lub agregacji obiektów (jak w „faworyzowaniu kompozycji nad dziedziczeniem”), ale wydaje …

8
„Wolę kompozycję niż dziedziczenie” - Czy to jedyny powód, aby bronić się przed zmianami podpisu?
Ta strona opowiada się za kompozycją za dziedziczeniem za pomocą następującego argumentu (sformułował to w moich słowach): Zmiana podpisu metody nadklasy (która nie została zastąpiona w podklasie) powoduje dodatkowe zmiany w wielu miejscach, gdy używamy dziedziczenia. Jednak gdy korzystamy ze składu, wymagana dodatkowa zmiana występuje tylko w jednym miejscu: podklasie. …

2
Jak uniknąć pisania wielu funkcji przekazywania w opakowaniu?
Mam klasę, która otacza inną klasę wspólnego typu podstawowego. Ponieważ interfejs typu podstawowego jest dość duży, wymaga to napisania wielu funkcji tranzytowych. Szukam sposobu, aby tego uniknąć. Zróbmy przykład: Car / \ Volvo VolvoWithTrailer Teraz muszę zaimplementować każdą funkcję w interfejsie samochodowym VolvoWithTrailer i wywołać odpowiednią funkcję na zawiniętym obiekcie …


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 …

4
Czy ręczne wstrzykiwanie zależności jest lepszą alternatywą dla kompozycji i polimorfizmu?
Po pierwsze, jestem programistą na poziomie podstawowym; W rzeczywistości kończę stopień naukowy AS końcowym projektem zwieńczenia latem. W mojej nowej pracy, gdy nie ma dla mnie żadnego projektu (czekają, aby zapełnić zespół nowymi pracownikami), dostaję książki do czytania i nauki podczas oczekiwania - niektóre podręczniki, inne nie tak bardzo (jak …


5
Czy w tym scenariuszu powinienem preferować kompozycję lub dziedziczenie?
Rozważ interfejs: interface IWaveGenerator { SoundWave GenerateWave(double frequency, double lengthInSeconds); } Interfejs ten jest implementowany przez wiele klas, które generują fale o różnych kształtach (na przykład SineWaveGeneratori SquareWaveGenerator). Chcę zaimplementować klasę, która generuje SoundWavedane muzyczne, a nie surowe dane dźwiękowe. Otrzyma nazwę nuty i długość wyrażoną w uderzeniach (nie sekundach) …


1
Czy jest sytuacja, w której lepiej byłoby użyć słabych referencji zamiast prostej kompozycji?
Chociaż docs Java określić, że odniesienia Słabe są przede wszystkim dla canonicalizing mapowania, znajdziesz wiele , wiele , wiele ludzi w internecie stwierdzające, że WeakHashMap jest idealny do przechowywania metadanych obiektu w trakcie jego trwania. Jednak nikt nie zadaje sobie trudu, aby podać zrozumiały I odpowiedni przykład. Używanie WeakHashMap do …

9
Dziedziczenie vs Kompozycja do kawałków szachowych
Szybkie wyszukiwanie tej wymiany stosów pokazuje, że ogólnie kompozycja jest ogólnie uważana za bardziej elastyczną niż dziedziczenie, ale jak zawsze zależy od projektu itp. I są chwile, kiedy dziedziczenie jest lepszym wyborem. Chcę stworzyć grę w szachy 3D, w której każdy element ma siatkę, być może różne animacje i tak …

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.