Mam moduł, powiedz „M”, który ma kilku klientów, powiedz „C1”, „C2”, „C3”. Chcę podzielić przestrzeń nazw modułu M, tj. Deklaracje interfejsów API i danych, które udostępnia, do plików nagłówkowych w taki sposób, aby - dla każdego klienta widoczne są tylko wymagane przez niego dane i interfejsy API; reszta przestrzeni nazw …
Kontekst: Używam C # Zaprojektowałem klasę. Aby ją odizolować i ułatwić testowanie jednostek, przekazuję wszystkie jej zależności; nie tworzy wewnętrznej instancji obiektu. Jednak zamiast odwoływać się do interfejsów w celu uzyskania potrzebnych danych, odwołuję się do Funcs ogólnego przeznaczenia zwracających wymagane dane / zachowanie. Kiedy wstrzykuję jej zależności, mogę to …
Począwszy od Java 8, defaultmetody zostały wprowadzone do interfejsów. W efekcie oznacza to, że nie wszystkie metody interfacesą abstract. Począwszy od Java 9 (być może), privatemetody będą dozwolone. Oznacza to, że nie wszystkie metody interfacesą public abstract. Pytanie „Czy metody w interfejsie Java powinny być deklarowane z publicmodyfikatorem dostępu lub …
Projektuję interfejs za pomocą dwóch powiązanych metod, podobnych do tego: public interface ThingComputer { default Thing computeFirstThing() { return computeAllThings().get(0); } default List<Thing> computeAllThings() { return ImmutableList.of(computeFirstThing()); } } Około połowa implementacji obliczy tylko jedną rzecz, podczas gdy druga połowa może obliczyć więcej. Czy ma to jakiś precedens w powszechnie …
Rozumiem, jak pracować z interfejsami i implementacją jawnego interfejsu w języku C #, ale zastanawiałem się, czy ukrywanie niektórych elementów, które nie byłyby często używane, jest złym rozwiązaniem. Na przykład: public interface IMyInterface { int SomeValue { get; set; } int AnotherValue { get; set; } bool SomeFlag { get; …
Ostatnio zajmuję się bardziej „zorganizowanym” programowaniem i dowiaduję się, że powinienem programować interfejs, a nie implementację. Mając to na uwadze, czy lepiej byłoby „naszkicować” projekt w interfejsach przed napisaniem implementacji, jeśli to możliwe? A jeśli tak jest, to w przypadku korzystania z bibliotek stron trzecich (tj. Lidgren), czy powinienem owijać …
Czy jest jakaś różnica między public class A extends AbstractB implements C {...} przeciw... public class A extends AbstractB {...} abstract class AbstractB implements C {...} Rozumiem, że w obu przypadkach klasa A będzie zgodna z interfejsem. W drugim przypadku AbstractBmoże zapewnić implementację metod interfejsu w C. Czy to jedyna …
Podczas programowania w OOP czasami biblioteka / interfejs udostępnia interfejs, którego nie można zmienić. Nazwijmy ten interfejs J. Teraz masz obiekt klasy A, który zużywa obiekty implementujące ten interfejs. Wewnątrz Potrzebna jest tylko niewielka część definicji interfejsu. Niektóre klasy obiektów są tworzone przeze mnie podczas projektu (nazwijmy jedną z nich …
Przez dziesięciolecia to było tak, że interfejsy były tylko tylko (tylko) dla określenia podpisy metod. Powiedziano nam, że to „właściwy sposób na robienie rzeczy”. Potem pojawiła się Java 8 i powiedziała: Teraz możesz zdefiniować domyślne metody. Muszę uciekać, pa. Jestem ciekawy, w jaki sposób jest to trawione zarówno przez doświadczonych …
Projektuję swój mały program OOP do symulacji wampirów, wilków, ludzi i ciężarówek i staram się wdrożyć moje własne ograniczone rozumienie interfejsów. ( Nadal tu streszczam i nie mam jeszcze implementacji kodu, więc jest to raczej kwestia projektu OOP ... myślę!) Czy mam rację, szukając „wspólnego zachowania” między tymi klasami i …
Próbuję modelować grę karcianą, w której karty mają dwa ważne zestawy funkcji: Pierwszy to efekt. Są to zmiany stanu gry, które mają miejsce podczas gry w kartę. Interfejs efektu jest następujący: boolean isPlayable(Player p, GameState gs); void play(Player p, GameState gs); Możesz uznać kartę za możliwą do zagrania tylko wtedy, …
Chociaż jest to pytanie ogólne, jest ono również specyficzne dla problemu, którego obecnie doświadczam. Obecnie w interfejsie mam określony interfejs o nazwie public interface IContextProvider { IDataContext { get; set; } IAreaContext { get; set; } } Ten interfejs jest często używany w całym programie, dlatego mam łatwy dostęp do …
Według Herb Suttera należy preferować abstrakcyjne interfejsy (wszystkie czyste funkcje wirtualne) niż abstrakcyjne klasy w C ++, aby oddzielić implementację tak dalece, jak to możliwe. Chociaż osobiście uważam tę zasadę za bardzo przydatną, ostatnio dołączyłem do zespołu z wieloma programistami Java i w kodzie Java ta wytyczna wydaje się nie …
Na przykład, czy to naruszenie praw autorskich, jeśli napiszę klasę o nazwie Losowo z dokładnie tym samym celem i tą samą sygnaturą metody, co klasa Microsoft .Net System.Random? Czy robi to różnicę w jakim języku jest napisany? W tym przypadku chcę napisać klasę Random do użytku w ActionScript, która nie …
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 …
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.