Вопросы с тегом «interfaces»

Вопросы по проектированию интерфейса, такие как программирование интерфейса.

8
Является ли интерфейс, предоставляющий асинхронные функции, утечкой абстракции?
Я читаю книгу « Принципы, практики и модели внедрения зависимостей» и читаю концепцию утечки абстракций, которая хорошо описана в книге. В эти дни я делаю рефакторинг базы кода C #, используя внедрение зависимостей, так что вместо блокирующих используются асинхронные вызовы. Поступая так, я рассматриваю некоторые интерфейсы, которые представляют абстракции в …

5
Имеет ли смысл определять интерфейс, если у меня уже есть абстрактный класс?
У меня есть класс с некоторыми функциями по умолчанию / общий доступ. Я использую abstract classдля этого: public interface ITypeNameMapper { string Map(TypeDefinition typeDefinition); } public abstract class TypeNameMapper : ITypeNameMapper { public virtual string Map(TypeDefinition typeDefinition) { if (typeDefinition is ClassDefinition classDefinition) { return Map(classDefinition); } ... throw new …

3
Считается ли интерфейс «пустым», если он наследуется от других интерфейсов?
Насколько я могу судить, пустые интерфейсы, как правило, считают плохой практикой, особенно когда такие вещи, как атрибуты, поддерживаются языком. Однако считается ли интерфейс «пустым», если он наследуется от других интерфейсов? interface I1 { ... } interface I2 { ... } //unrelated to I1 interface I3 : I1, I2 { // …

2
UnsupportedOperationException в интерфейсах платформы Java-коллекций
Просматривая Java Collections Framework, я заметил, что довольно много интерфейсов имеют комментарий (optional operation). Эти методы позволяют реализовать классы, UnsupportedOperationExceptionесли они просто не хотят реализовывать этот метод. Примером этого является addAllметод в Set Interface. Теперь, как указано в этой серии вопросов, интерфейсы являются определяющим контрактом для того, что может ожидать …

4
Плохо ли использовать интерфейс только для категоризации?
Например: Скажем , у меня есть классы A, B, C. У меня есть два интерфейса, давайте называть их IAnimalи IDog. IDogнаследует от IAnimal. Aи Bесть IDog, а Cнет, но это IAnimal. Важной частью является то, что не IDogпредоставляет никаких дополнительных функций. Он используется только для разрешения Aи B, но не …

5
Как меняется концепция класса при передаче данных в конструктор вместо параметров метода?
Допустим, мы делаем парсер. Одна реализация может быть: public sealed class Parser1 { public string Parse(string text) { ... } } Или мы могли бы вместо этого передать текст конструктору: public sealed class Parser2 { public Parser2(string text) { this.text = text; } public string Parse() { ... } } …

1
Почему CharSequence не определяет содержит (CharSequence)?
Это относится как к Java SE, так и к Android, поскольку контракты идентичны. Документация CharSequence для Java SE CharSequence документация для Android CharSequenceне определяет contains(CharSequence)метод. Кажется, я не могу найти причину, по которой, и в том числе, было бы весьма полезно предотвратить необходимость вызова CharSequence#toString()для проверки последовательности символов. Например, в …

5
Отдельный интерфейс для методов мутации
Я работал над рефакторингом некоторого кода, и я думаю, что, возможно, сделал первый шаг по кроличьей норе. Я пишу пример на Java, но я полагаю, что он может быть агностиком. У меня есть интерфейс, Fooопределенный как public interface Foo { int getX(); int getY(); int getZ(); } И реализация как …

9
Какой ОО дизайн использовать (есть ли шаблон дизайна)?
У меня есть два объекта, которые представляют «Бар / Клуб» (место, где вы пьете / общаетесь). В одном сценарии мне нужно имя бара, адрес, расстояние, слогон В другом сценарии мне нужно название бара, адрес, URL сайта, логотип Итак, у меня есть два объекта, представляющих одно и то же, но с …

4
Термин «интерфейс» в C ++
Ява проводит четкое различие между classи interface. (Я верю, что C # тоже, но у меня нет опыта с этим). Однако при написании C ++ не существует языкового различия между классом и интерфейсом. Следовательно, я всегда рассматривал интерфейс как обходной путь для отсутствия множественного наследования в Java. Делать такое различие …

3
Чем экзистенциальные типы отличаются от интерфейсов?
Учитывая экзистенциальный тип T = ∃X.{op₁:X, op₂:X→boolean} и этот общий интерфейс Java: interface T<X> { X op₁(); boolean op₂(X something); } Каковы принципиальные различия между экзистенциальным типом и интерфейсом Java? Очевидно, что есть синтаксические различия и объектная ориентация Java (которая также включает такие детали, как скрытые thisпараметры и т. Д.). …

3
Разница между различными интерфейсами коллекции Generic в C #
Я играю с C # для Windows и ASP.net MVC в течение некоторого времени. Но я все еще неясен в некоторых областях. Я пытаюсь понять основное различие между проблемами производительности и использованием и обменом подобными видами интерфейсов универсальных коллекций . Какова основная разница между IEnumerable<T>, ICollection<T>, List<T>(Class)? Я, кажется, использую …

5
Модифицированный шаблон дизайна стратегии
Я недавно начал изучать шаблоны проектирования, и одна вещь, которую я кодирую, идеально подошла бы к шаблону стратегии, за исключением одного небольшого различия. По сути, некоторые (но не все) из моих алгоритмов нуждаются в дополнительном параметре или двух передаваемых им. Так что мне либо нужно передать им дополнительный параметр, когда …

6
Каковы веские причины для использования явной реализации интерфейса с единственной целью скрыть участников?
Во время одного из моих исследований тонкостей C # я наткнулся на интересный отрывок, касающийся явной реализации интерфейса. 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. Разница между разрешением …
11 c#  design  interfaces 

3
Использование интерфейсов для слабосвязанного кода
Фон У меня есть проект, который зависит от использования определенного типа аппаратного устройства, хотя на самом деле не имеет значения, кто делает это аппаратное устройство, если оно делает то, что мне нужно. При этом даже два устройства, которые должны делать одно и то же, будут иметь различия, если они не …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.