Если вы используете подход на основе интерфейса, как вы называете более поведенческие интерфейсы? - PullRequest
2 голосов
/ 05 июля 2010

Я занимаюсь разработкой библиотеки, содержащей несколько элементов управления (или компонентов).Я использую интерфейсный подход к дизайну шрифтов, но в конечном итоге это привело меня к вопросу, который беспокоил меня долгое время.Если вы используете подход, основанный на интерфейсе, как вы называете интерфейсы поведения?Например, давайте предположим, что у вас есть некоторые функции установщика геттера, и они используются многими интерфейсами, а предоставляемая ими функциональность не может быть названа с помощью «-able» постфикса;что бы вы сделали, или вы делаете?Спасибо ...

Редактировать: Например, я создал такой интерфейс:

public interface HasText {

    public String getText();

    public void setText(String text);

}

Большинство интерфейсов, которые используют эти функции, не имеют общего супертипа.

Ответы [ 2 ]

1 голос
/ 07 июля 2010

Назовите интерфейс как слово или фразу, правильно описывающую любой класс, который его реализует. «HasText» является прекрасным примером, поскольку он описывает разработчика (он имеет свойство Text).

Сделайте это специфичным для интерфейса. «IsAnObject», «MightHaveData» или «ExistsInCyberspace» не являются специфическими для интерфейса.

1 голос
/ 05 июля 2010

Уверены, что вам нужны разные интерфейсы поведения?Разве этого не достаточно для реализации одного интерфейса поведения и пары конкретных поведений?

Просто пример, предположим, что у нас есть реализация реального дикого животного, скажем, класса Cat с некоторыми датчиками ибольшой каталог поведения.Теперь кошачий глазной датчик сообщает «мышь !!».Cat запросит его Collection из Behaviour экземпляров, если есть совпадение, если какой-либо из сохраненных Behaviour экземпляров захочет принять действие.Предположим, у нас есть экземпляр class HuntMouse implements Behaviour, сохраненный в списке, и это наилучшее совпадение, тогда кошка вызовет action() для этого Behaviour и поищет мышь.

Вернемся к вашему вопросу - Iдумаю, одного Behaviour интерфейса с 2-3 методами будет достаточно, конкретные Behaviour объекты не нуждаются в префиксе или суффиксе.И если необходимо, я предлагаю -Behaviour (например, HuntMouseBehaviour)


Изначально вы запрашивали Поведения , но в вашем примере HasText показана какая-то функция .Где в этом особом случае, TextProvider может быть лучшим выбором, а hasText более подходящим.Реализация интерфейса добавляет в класс функцию provide some text.


Не в качестве ответа на вопрос, а для дальнейшего чтения: Список шаблонов поведенческого проектирования .

(Кстати, мой пример, приведенный выше, был вдохновлен реальными реализациями из области робототехники - даже если кот не робот;))

...