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

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

4
Должен ли каждый класс, который я пишу, придерживаться интерфейса?
Я пишу игру на Typescript и решил, что буду пытаться придерживаться идеи « программирования на основе интерфейса », где вы пишете код, основанный на интерфейсе, а не на реализации объекта. Я написал большое количество интерфейсов и классов, которые их реализуют, затем сделал шаг назад и понял, что классы достаточно просты, …

12
Является ли «если метод повторно используется без изменений, поместите метод в базовый класс или создайте интерфейс», это хорошее правило?
Мой коллега придумал эмпирическое правило для выбора между созданием базового класса или интерфейса. Он говорит: Представьте себе каждый новый метод, который вы собираетесь реализовать. Для каждого из них рассмотрим следующее: будет ли этот метод реализован более чем одним классом именно в этой форме, без каких-либо изменений? Если ответ «да», создайте …

5
Интерфейс и наследование: лучшее из обоих миров?
Я «открыл» интерфейсы и начал любить их. Прелесть интерфейса в том, что это контракт, и любой объект, который выполняет этот контракт, может использоваться везде, где требуется этот интерфейс. Проблема с интерфейсом состоит в том, что у него не может быть реализации по умолчанию, что является проблемой для мирских свойств и …

2
Как правильно реализовать интерфейс OnClickListener для многих кнопок?
Моя активность Android содержит несколько кнопок, для которых требуется OnClickListener. Я видел много разных способов сделать это, таких как: Реализация интерфейса в классе деятельности Создание отдельного класса, который реализует интерфейс Определение анонимного внутреннего класса для каждой кнопки. Я видел много примеров каждого подхода. Однако мне не ясно, почему один подход …

1
Черты, Наследование и Интерфейсы в Groovy, когда их использовать?
Я изучаю Groovy, и я только что узнал о новой функции, добавленной в 2.3, которая является добавлением черт . Теперь мне кажется, что черты позволяют вам делать практически все, что может сделать суперкласс и интерфейс. Делает ли добавление Traits в Groovy наследование и интерфейсы устаревшими? А если нет, то в …

1
Как структурировать интерфейсы, когда объекты используют только часть интерфейса?
У меня есть проект, в котором у меня есть два класса, которые требуют объект доступа к базе данных, который обновляет одну и ту же таблицу. Ограничения фреймворка и проекта делают его таким, что я не могу объединить эти два класса. Я создал случай ниже, который показывает, как настройки. Класс A …

3
Это нормально для интерфейсов, чтобы зависеть от конкретных классов?
Я создаю интерфейс на Java для пользовательского обработчика ошибок. Хочу передать объект ошибки аргумента, но мне нужно, чтобы он был потомком Exceptionкласса. Можно ли использовать мое имя класса в интерфейсе? Разве это не сделает его менее интерфейсным с точки зрения отсутствия зависимости от какой-либо реализации? Я пытаюсь сделать что-то вроде …

2
Программирование на ориентированные на данные интерфейсы
Часть нашего кода написана в следующем стиле: // 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 { public string …

2
Принцип сегрегации интерфейса: что делать, если интерфейсы имеют значительное перекрытие?
Из Agile Software Development, Принципы, Шаблоны и Практики: Pearson New International Edition : Иногда методы, вызываемые различными группами клиентов, перекрываются. Если перекрытие небольшое, то интерфейсы для групп должны оставаться отдельными. Общие функции должны быть объявлены во всех перекрывающихся интерфейсах. Класс сервера будет наследовать общие функции от каждого из этих интерфейсов, …

5
Всегда ли имеет смысл «программировать на интерфейс» в Java?
Я видел обсуждение этого вопроса относительно того, как будет реализован класс, реализующий интерфейс. В моем случае я пишу очень маленькую программу на Java, которая использует экземпляр TreeMap, и, по мнению каждого, она должна создаваться следующим образом: Map<X> map = new TreeMap<X>(); В моей программе я вызываю функцию map.pollFirstEntry(), которая не …

3
Является ли использование интерфейсов для типов данных анти-паттерном?
Предположим, у меня есть различные объекты в моей модели (с использованием EF), например, Пользователь, Продукт, Счет-фактура и Заказ. Я пишу пользовательский элемент управления, который может распечатывать сводки объектов сущностей в моем приложении, где сущности принадлежат заранее определенному набору, в этом случае я говорю, что сводки пользователей и продуктов можно суммировать. …

6
Разделить большие интерфейсы
Я использую большой интерфейс с около 50 методов для доступа к базе данных. Интерфейс был написан моим коллегой. Мы обсуждали это: Я: 50 методов это слишком много. Это кодовый запах. Коллега: что мне с этим делать? Вы хотите доступ к БД - у вас есть. Я: Да, но это неясно …

6
Есть ли разница между интерфейсами и абстрактными классами, которые имеют только абстрактные методы?
Допустим, у нас есть абстрактный класс, и пусть этот класс имеет только абстрактные методы. Отличается ли этот абстрактный класс от интерфейса, который имеет только те же методы? Я хочу знать, есть ли какие-либо различия как в философском, объективном, так и в базовой реализации языка программирования между абстрактным классом только с …

3
Правила о конкретности типов параметров метода, возвращаемых типов и типов свойств
Некоторое время назад я читал своего рода «практическое правило» о конкретности типов параметров метода, типов возвращаемых данных и типов свойств, но я просто не помню его. В нем говорилось о том, что ваши типы возвращаемых данных должны быть как можно более конкретными, а типы параметров - как можно более абстрактными …

2
Существует ли принцип интерфейса «спросите только то, что вам нужно»?
Я перешел на использование принципа проектирования и использования интерфейсов, который гласит: «просите только то, что вам нужно». Например, если у меня есть куча типов, которые можно удалить, я сделаю Deletableинтерфейс: interface Deletable { void delete(); } Тогда я могу написать общий класс: class Deleter<T extends Deletable> { void delete(T t) …

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