Zauważyłem, że od PHP5 dodano interfejsy do języka. Ponieważ jednak PHP jest tak luźno wpisane, wydaje się, że większość korzyści płynących z używania interfejsów została utracona. Dlaczego jest to uwzględnione w języku?
Po przeczytaniu Czy nazwy pakietów powinny być w liczbie pojedynczej czy mnogiej? przyszło mi do głowy, że nigdy nie widziałem właściwej debaty na temat jednego z moich domowych pomysłów: nazewnictwa implementacji interfejsów. Załóżmy, że masz interfejs, Orderktóry ma być implementowany na różne sposoby, ale implementacja jest początkowa tylko przy pierwszym …
Próbuję dobrze zrozumieć, jak zaimplementować dobre oddzielenie interfejsu użytkownika od modelu, ale mam problem z ustaleniem, gdzie dokładnie podzielić linie. Patrzyłem na Model-View-Presenter, ale nie jestem pewien, jak dokładnie go wdrożyć. Na przykład mój widok ma wiele okien dialogowych. Czy powinna istnieć klasa View z instancjami każdego z okien dialogowych? …
Jeśli moja klasa implementsjest interfejsem, to czy mogę powiedzieć, że śledzę dziedziczenie? Wiem, że kiedy klasa jest extendsinną klasą, to jest to dziedzictwo.
Całkiem proste. Implementuję interfejs, ale jest jedna właściwość, która jest niepotrzebna dla tej klasy i w rzeczywistości nie powinna być używana. Mój początkowy pomysł polegał na zrobieniu czegoś takiego: int IFoo.Bar { get { raise new NotImplementedException(); } } Przypuszczam, że nie ma w tym nic złego, ale nie wydaje …
Aby uprościć interfejs, czy lepiej nie mieć tej getBalance()metody? Przejście 0do charge(float c);daje taki sam wynik: public class Client { private float bal; float getBalance() { return bal; } float charge(float c) { bal -= c; return bal; } } Może zanotuj javadoc? Lub po prostu pozostawić użytkownikowi klasy, aby …
Chcę wiedzieć, dlaczego .compareTo()jest w Comparableinterfejsie, podczas gdy metoda podobna .equalsjest w Objectklasie. Wydaje mi się arbitralne, dlaczego takiej metody .compareTo()nie ma już w Objectklasie. Aby użyć .compareTo(), zaimplementuj Comparableinterfejs i zaimplementuj .compareTo()metodę do swoich celów. W przypadku .equals()metody po prostu przesłonisz metodę w swojej klasie, ponieważ wszystkie klasy dziedziczą …
Często spotykałem się z terminem „programowanie interfejsu zamiast implementacji” i myślę, że rozumiem, co to znaczy. Ale chcę się upewnić, że rozumiem, jakie są korzyści i możliwe wdrożenia. „Programowanie interfejsu” oznacza, że tam, gdzie to możliwe, należy odwoływać się do bardziej abstrakcyjnego poziomu klasy (interfejs, klasa abstrakcyjna, a czasem do …
Mój współpracownik i ja mamy różne opinie na temat relacji między klasami podstawowymi a interfejsami. Jestem przekonany, że klasa nie powinna implementować interfejsu, chyba że z tej klasy można korzystać, gdy wymagana jest implementacja interfejsu. Innymi słowy, lubię widzieć taki kod: interface IFooWorker { void Work(); } abstract class BaseWorker …
Aby być wymiennymi i testowalnymi, zwykle usługi logiczne muszą mieć interfejs, np public class FooService: IFooService { ... } Pod względem projektowym zgadzam się z tym, ale jedną z rzeczy, która przeszkadza mi w tym podejściu, jest to, że w przypadku jednej usługi musisz zadeklarować dwie rzeczy (klasę i interfejs), …
Często używa się „-able” jako sufiksu dla interfejsów, np Numerowalny drukowalny, wymienny, pijalny, strzelalny, obrotowy Myślałem, że „Can-” może być lepsze, ponieważ może być bardziej opisowe. Tak, jest bardziej pracowity i dodaje szum do nazwy interfejsu. W szczególności można stosować czasowniki pasywne. Np. 1 oznacza Strzelanie oznacza, że obiekt jest …
W ciągu ostatnich kilku miesięcy potknąłem się kilka razy o następującą technikę / schemat. Nie mogę jednak znaleźć konkretnej nazwy, ani nie jestem w 100% pewien wszystkich jej zalet i wad. Wzór wygląda następująco: W interfejsie Java zestaw typowych metod jest definiowany jak zwykle. Jednak przy użyciu klasy wewnętrznej domyślna …
Chociaż nie jest to obowiązkowe w standardzie C ++, wydaje się, że GCC, na przykład, implementuje klasy nadrzędne, w tym czysto abstrakcyjne, poprzez włączenie wskaźnika do tabeli v dla tej abstrakcyjnej klasy w każdej instancji danej klasy . Oczywiście powoduje to powiększenie rozmiaru każdej instancji tej klasy o wskaźnik dla …
Zadanie polega na skonfigurowaniu sprzętu w urządzeniu zgodnie z niektórymi specyfikacjami wejściowymi. Należy to osiągnąć w następujący sposób: 1) Zbierz informacje o konfiguracji. Może się to zdarzyć w różnych momentach i miejscach. Na przykład zarówno moduł A, jak i moduł B mogą żądać (w różnym czasie) niektórych zasobów od mojego …
Załóżmy, że masz interfejs IFoo: public interface IFoo { void Bar(string s); int Quux(object o); } W wersji 2 interfejsu API musisz dodać metodę Glargdo tego interfejsu. Jak to zrobić, nie psując istniejących użytkowników interfejsu API i zachowując zgodność wsteczną? Jest to skierowane głównie do platformy .NET, ale może również …
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.