Piszę grę w Typescript i postanowiłem, że spróbuję zastosować się do idei „ programowania opartego na interfejsie ”, w którym piszesz kod oparty na interfejsie zamiast implementacji obiektu. Napisałem sporo interfejsów i klas, które je implementują, a następnie cofnąłem się i zdałem sobie sprawę, że klasy były na tyle proste, …
Mój kolega wymyślił ogólną zasadę wyboru między tworzeniem klasy podstawowej a interfejsem. On mówi: Wyobraź sobie każdą nową metodę, którą zamierzasz wdrożyć. Rozważ to dla każdego z nich: czy ta metoda zostanie zaimplementowana przez więcej niż jedną klasę w dokładnie tej formie, bez żadnych zmian? Jeśli odpowiedź brzmi „tak”, utwórz …
„Odkryłem” interfejsy i zacząłem je kochać. Piękno interfejsu polega na tym, że jest to umowa, a każdy obiekt spełniający tę umowę może być używany wszędzie tam, gdzie wymagany jest interfejs. Problem z interfejsem polega na tym, że nie może on mieć domyślnej implementacji, co utrudnia przyziemne właściwości i pokonuje DRY. …
Moja aktywność na Androida zawiera wiele przycisków, z których wszystkie wymagają OnClickListener. Widziałem wiele różnych sposobów robienia tego, takich jak: Implementacja interfejsu w klasie aktywności Tworzenie oddzielnej klasy, która implementuje interfejs Definiowanie anonimowej klasy wewnętrznej dla każdego przycisku. Widziałem wiele przykładów każdego podejścia. Jednak nie jest dla mnie jasne, dlaczego …
Uczę się groovy i właśnie dowiedziałem się o nowej funkcji dodanej w 2.3, która jest dodatkiem do cech . Teraz wydaje mi się, że cechy pozwalają zrobić w zasadzie wszystko, co może zrobić superklasa i interfejs. Czy dodanie cech do Groovy powoduje, że dziedziczenie i interfejsy stają się przestarzałe? A …
Mam projekt, w którym mam dwie klasy, które obie wymagają obiektu dostępu do bazy danych, który aktualizuje tę samą tabelę. Ograniczenia frameworka i projektu sprawiają, że nie mogę łączyć tych dwóch klas. Utworzyłem poniżej skrzynkę, która pokazuje, jak wygląda konfiguracja. Klasa A musi mieć możliwość aktualizacji i odczytu rekordu, podczas …
Tworzę interfejs w Javie dla niestandardowej procedury obsługi błędów. Chcę przekazać obiekt błędu argumentu, ale potrzebuję go, aby był dzieckiem Exceptionklasy. Czy mogę używać mojej zdefiniowanej nazwy klasy w interfejsie? Czy nie zmniejszy to interfejsu, ponieważ nie będzie zależny od żadnej implementacji? Próbuję zrobić coś takiego: public class CustomException { …
Część naszej bazy kodu napisana jest w następującym stylu: // IScheduledTask.cs public interface IScheduledTask { string TaskName { get; set; } int TaskPriority { get; set; } List<IScheduledTask> Subtasks { get; set; } // ... several more properties in this vein } // ScheduledTaskImpl.cs public class ScheduledTaskImpl : IScheduledTask { …
Z Agile Software Development, zasad, wzorców i praktyk: Pearson New International Edition : Czasami metody przywoływane przez różne grupy klientów nakładają się. Jeśli nakładanie się jest niewielkie, interfejsy dla grup powinny pozostać osobne. Wspólne funkcje powinny być deklarowane we wszystkich nakładających się interfejsach. Klasa serwera odziedziczy wspólne funkcje z każdego …
Widziałem dyskusję przy tym pytaniu dotyczącą sposobu tworzenia instancji klasy implementującej z interfejsu. W moim przypadku piszę bardzo mały program w Javie, który korzysta z instancji TreeMapi, zgodnie z opinią wszystkich, powinien być utworzony w następujący sposób: Map<X> map = new TreeMap<X>(); W moim programie wywołuję funkcję map.pollFirstEntry(), która nie …
Załóżmy, że mam różne podmioty w moim modelu (przy użyciu EF), powiedzmy Użytkownik, Produkt, Faktura i Zamówienie. Piszę kontrolkę użytkownika, która może wydrukować podsumowania obiektów encji w mojej aplikacji, gdzie encje należą do wcześniej ustalonego zestawu, w tym przypadku mówię, że streszczenia użytkownika i produktu można podsumować. Wszystkie streszczenia będą …
Korzystam z dużego interfejsu z około 50 metodami dostępu do bazy danych. Interfejs został napisany przez mojego kolegę. Omówiliśmy to: Ja: 50 metod to za dużo. To zapach kodu. Kolega: Co mam z tym zrobić? Chcesz dostępu do DB - masz go. Ja: Tak, ale jest niejasne i trudno je …
Powiedzmy, że mamy klasę abstrakcyjną i niech ta klasa ma tylko abstrakcyjne metody. Czy ta klasa abstrakcyjna różni się od interfejsu, który ma tylko te same metody? Chcę wiedzieć, czy istnieją jakieś różnice zarówno filozoficzne, obiektywne, jak i podstawowe w implementacji języka programowania między klasą abstrakcyjną zawierającą tylko elementy abstrakcyjne …
Jakiś czas temu przeczytałem rodzaj „ogólnej zasady” na temat konkretności typów parametrów metody, typów zwracanych i typów właściwości, ale po prostu tego nie pamiętam. Mówiło coś o tym, aby typy zwracane były jak najbardziej konkretne, a typy parametrów jak najbardziej abstrakcyjne ... lub odwrotnie. Nie wiem, czy tak naprawdę była …
Zacząłem używać zasady projektowania i korzystania z interfejsów, która mówi w zasadzie: „proś tylko o to, czego potrzebujesz”. Na przykład, jeśli mam kilka typów, które można usunąć, utworzę Deletableinterfejs: interface Deletable { void delete(); } Następnie mogę napisać ogólną klasę: class Deleter<T extends Deletable> { void delete(T t) { t.delete(); …
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.