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 …
O ile wiem, puste interfejsy są ogólnie uważane za złą praktykę - szczególnie tam, gdzie język obsługuje takie atrybuty, jak atrybuty. Czy jednak interfejs jest uważany za „pusty”, jeśli dziedziczy po innych interfejsach? interface I1 { ... } interface I2 { ... } //unrelated to I1 interface I3 : I1, …
Przeglądając Framework kolekcji Java, zauważyłem, że sporo interfejsów ma komentarz (optional operation). Te metody pozwalają na implementację klas, UnsupportedOperationExceptionjeśli nie chcą po prostu implementować tej metody. Przykładem tego jest addAllmetoda w Set Interface. Teraz, jak stwierdzono w tej serii pytań, interfejsy są definiującą umową dotyczącą tego, czego może oczekiwać użycie. …
Na przykład: Że mam zajęcia A, B, C. Mam dwa interfejsy, nazwijmy je IAnimali IDog. IDogdziedziczy po IAnimal. Ai Bsą IDog, chociaż Cnie jest, ale jest IAnimal. Ważną częścią jest to, że IDognie zapewnia żadnej dodatkowej funkcjonalności. Służy wyłącznie do zezwalania Ai przekazywania B, ale nie Cdo przekazania, jako argumentu …
Powiedzmy, że tworzymy parser. Jednym z wdrożeń może być: public sealed class Parser1 { public string Parse(string text) { ... } } Lub możemy zamiast tego przekazać tekst do konstruktora: public sealed class Parser2 { public Parser2(string text) { this.text = text; } public string Parse() { ... } } …
Dotyczy to zarówno Java SE, jak i Androida, ponieważ umowy są identyczne. Dokumentacja CharSequence dla Java SE Dokumentacja CharSequence dla Androida CharSequencenie definiuje contains(CharSequence)metody. Wydaje mi się, że nie mogę znaleźć przyczyny, a włączenie tego byłoby całkiem przydatne, zapobiegając potrzebie dzwonienia w CharSequence#toString()celu sprawdzenia sekwencji znaków. Na przykład w Androidzie …
Pracowałem nad refaktoryzacją kodu i myślę, że mogłem zrobić pierwszy krok w stronę króliczej nory. Piszę przykład w Javie, ale przypuszczam, że może być agnostyczny. Mam interfejs Foozdefiniowany jako public interface Foo { int getX(); int getY(); int getZ(); } I wdrożenie jako public final class DefaultFoo implements Foo { …
Mam dwa przedmioty reprezentujące „Bar / Klub” (miejsce, w którym pijesz / spędzasz czas z przyjaciółmi). W jednym scenariuszu potrzebuję nazwy paska, adresu, odległości, hasła W innym scenariuszu potrzebuję nazwy paska, adresu, adresu URL strony internetowej, logo Mam więc dwa obiekty reprezentujące to samo, ale z różnymi polami. Lubię używać …
Java wyraźnie rozróżnia między classi interface. (Wierzę, że C # też, ale nie mam z tym doświadczenia). Jednak podczas pisania C ++ nie ma wymuszonego rozróżnienia między klasą a interfejsem. W związku z tym zawsze postrzegałem interfejs jako obejście braku wielokrotnego dziedziczenia w Javie. Dokonanie takiego rozróżnienia jest w C …
Biorąc pod uwagę typ egzystencjalny T = ∃X.{op₁:X, op₂:X→boolean} i ten ogólny interfejs Java: interface T<X> { X op₁(); boolean op₂(X something); } Jakie są podstawowe różnice między typem egzystencjalnym a interfejsem Java? Oczywiście istnieją różnice składniowe i orientacja obiektowa Javy (która obejmuje również szczegóły, takie jak ukryte thisparametry itp.). …
Od jakiegoś czasu gram z C # dla Windows i ASP.net MVC. Ale nadal jestem niejasny w kilku obszarach. Próbuję zrozumieć podstawową różnicę między problemami z wydajnością a używaniem i zamianą podobnych rodzajów Ogólnych interfejsów kolekcji . Jaka jest podstawowa różnica między IEnumerable<T>, ICollection<T>, List<T>(Class)? Wydaje mi się, że używam …
Niedawno zacząłem szukać Wzorów projektowych i jedna rzecz, którą koduję, idealnie pasuje do wzorca Strategii, z wyjątkiem jednej małej różnicy. Zasadniczo niektóre (ale nie wszystkie) z moich algorytmów wymagają przekazania dodatkowego parametru lub dwóch. Więc albo będę musiał przekazuję im dodatkowy parametr, gdy wywołuję ich metodę obliczania lub przechowuj je …
Podczas jednego z moich badań nad zawiłościami języka C # natknąłem się na interesujący fragment dotyczący jawnego wdrożenia interfejsu. While this syntax is quite helpful when you need to resolve name clashes, you can use explicit interface implementation simply to hide more "advanced" members from the object level. Różnica między …
tło Mam projekt, który zależy od użycia określonego rodzaju urządzenia sprzętowego, podczas gdy tak naprawdę nie ma znaczenia, kto je tworzy, o ile robi to, czego potrzebuję. Biorąc to pod uwagę, nawet dwa urządzenia, które powinny robić to samo, będą się różnić, jeśli nie zostaną wyprodukowane przez tego samego producenta. …
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.