Nie pamiętam, kiedy ostatni raz pisałem lekcje ogólne. Za każdym razem, gdy wydaje mi się, że potrzebuję go po pewnym namyśle, wyciągam wniosek, że nie. Druga odpowiedź na to pytanie sprawiła, że poprosiłem o wyjaśnienia (ponieważ nie mogę jeszcze komentować, zadałem nowe pytanie). Weźmy więc podany kod jako przykład przypadku, …
AFAIK, moje klasy klasy extendsnadrzędne i implementsinterfejsy. Ale natrafiam na sytuację, w której nie mogę użyć implements SomeInterface. Jest to deklaracja typów ogólnych. Na przykład: public interface CallsForGrow {...} public class GrowingArrayList <T implements CallsForGrow> // BAD, won't work! extends ArrayList<T> Tutaj używanie implementsjest składniowo zabronione. Najpierw pomyślałem, że używanie …
Jestem aktualnie w procesie próbują opanować C #, więc czytam kod adaptacyjnego poprzez C # przez Gary McLean Hall . Pisze o wzorach i anty-wzorach. W części Implementacje kontra interfejsy pisze: Deweloperzy, którzy są nowi w koncepcji programowania interfejsów, często mają trudności z odpuszczeniem tego, co kryje się za interfejsem. …
Dobra ćwierć wieku temu, kiedy uczyłem się C ++, nauczono mnie, że interfejsy powinny wybaczać i, w miarę możliwości, nie przejmować się kolejnością wywoływania metod, ponieważ konsument może nie mieć dostępu do źródła lub dokumentacji zamiast to. Jednak za każdym razem, gdy mentorowałem młodszych programistów i starszych deweloperów, słyszeli mnie, …
Rozważ poniższy przykład. Każda zmiana wyliczenia ColorChoice wpływa na wszystkie podklasy IWindowColor. Czy wytryski powodują kruche interfejsy? Czy istnieje coś lepszego niż wyliczenie, które pozwala na większą elastyczność polimorficzną? enum class ColorChoice { Blue = 0, Red = 1 }; class IWindowColor { public: ColorChoice getColor() const=0; void setColor( const …
Przejmuję frontendową rolę w projekcie. Czy powinienem określać dla moich kolegów z zespołu dokładny format JSON, który ich PHP zwraca do mojego JavaScript? Na przykład, czy powinienem im powiedzieć, że powinni użyć formatu podobnego do opisanego tutaj: Właściwy sposób na strukturyzację JSON na potrzeby konsumpcji A może powinienem zachować jak …
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 …
OK .. po całej dyskusji zmieniam nieco moje pytanie, aby lepiej odzwierciedlić konkretny przykład, z którym mam do czynienia. Mam dwie klasy ModelOnei klasy ModelTwote wykonują podobny typ funkcjonalności, ale nie są ze sobą powiązane. Mam jednak trzecią klasę, CommonFuncktóra zawiera pewną funkcjonalność publiczną, która jest zaimplementowana zarówno ModelOnei ModelTwozostała …
Kiedy używam C # do pisania kodu i definiuję interfejs za pomocą Visual Studio 2010, zawsze zawiera on szereg instrukcji „using” (jak pokazano w przykładzie) using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace TestEngine.TestNameSpace { interface ITest1 { bool testMethod(int xyz); } } Zastanawiam się, do czego służą i …
Poniższe dziedziczenie interfejsu jest nielegalne w PHP, ale myślę, że byłoby całkiem przydatne w prawdziwym życiu. Czy jest jakiś faktyczny lub udokumentowany problem z poniższym projektem, przed którym PHP mnie chroni? <?php /** * Marker interface */ interface IConfig {} /** * An api sdk tool */ interface IApi { …
Mam metodę, która tworzy plik danych po rozmowie z tablicą cyfrową: CreateDataFile(IFileAccess boardFileAccess, IMeasurer boardMeasurer) Oto boardFileAccessi boardMeasurerta sama instancja Boardobiektu, który implementuje zarówno IFileAccessi IMeasurer. IMeasurerjest stosowany w tym przypadku do pojedynczej metody, która spowoduje, że jeden pin na płycie będzie aktywny, aby wykonać prosty pomiar. Dane z tego …
( Dla celów tego pytania, kiedy mówię „interfejs”, mam na myśli konstrukcję językowąinterface , a nie „interfejs” w innym znaczeniu tego słowa, tj. Publiczne metody, które klasa oferuje światu zewnętrznemu w celu komunikowania się i manipuluj nim. ) Luźne sprzężenie można uzyskać poprzez uzależnienie obiektu od abstrakcji zamiast rodzaju betonu. …
Jeśli chcę programować w stylu „funkcjonalnym”, czym zastąpiłbym interfejs? interface IFace { string Name { get; set; } int Id { get; } } class Foo : IFace { ... } Może Tuple<>? Tuple<Func<string> /*get_Name*/, Action<String> /*set_Name*/, Func<int> /*get_Id*/> Foo; Jedynym powodem, dla którego używam interfejsu jest przede wszystkim to, …
Ostatnio zacząłem owijać głowę wokół OOP i teraz jestem do tego stopnia, że im więcej czytam o różnicach między klasami abstrakcyjnymi i interfejsami, tym bardziej się mylę. Jak dotąd nie można utworzyć żadnej z nich. Interfejsy są mniej więcej strukturalnymi planami, które określają szkielet, a streszczenia są różne, ponieważ są …
Myślałem o tym i miałem pewne wątpliwości. Kiedy deklaruję interfejs, na przykład: public interface MyInterface { public void method1(); public void method2(); } Czy te metody interfejsu można uznać za abstrakcyjne? Mam na myśli to, że pojęcie metody abstrakcyjnej to: Metoda abstrakcyjna to metoda zadeklarowana, ale nie zawierająca implementacji. Czy …
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.