MouseAdapter: какой шаблон он использует? - PullRequest
5 голосов
/ 29 ноября 2011

Мне удалось найти замечательные ресурсы, которые говорят мне, что MouseAdapter из Java API не использует шаблон Adapter.Вопрос в следующем: существует ли шаблон, который MouseAdapter реализует?

Я знаю, что он делает: он создает конкретный класс для интерфейса MouseListener, поэтому вы можете просто расширить класс, чтобы избежать реализации ненужных шаблонов.

Я думал, что это может быть частью схемы Моста.Я не уверен, хотя, поскольку я не знаком с этим шаблоном.

Ответы [ 3 ]

4 голосов
/ 29 ноября 2011

Отличный вопрос!

Я могу понять, почему один респондент указал Null Object, поскольку есть некоторые концептуальные сходства. Мне очень нравится этот ответ. Но в Null Object это действительно устраняет необходимость постоянно проверять NULL, как в:

if (obj != null)
    obj.DoSomething();

И вы делаете это путем создания объекта-заглушки, который переопределяет DoSomething () с реализацией без операции. Разница для меня в том, что цель совершенно иная. Если я вижу нулевой объект (по имени или в документах), я ожидаю, что он должен реализовывать ВСЕ операции без операции. Я бы никогда не ожидал, что класс унаследует от Null Object. На самом деле, на мой взгляд, они должны быть запечатаны.

Я не думаю, что Adapter - это плохо, поскольку Adapter намеревается адаптировать (изменить) несовместимый или неподходящий интерфейс в формат, который можно использовать или использовать. Это определенно цель MouseAdapter. Интерфейс MouseListener действительно плохой, и MouseAdapter преобразует этот интерфейс в нечто более удобное для использования.

Во что оно вписывается? Я бы сказал, шаблон шаблона. В частности, он преобразует методы реализации интерфейса в «операции подключения». Операция ловушки - это метод, который существует для переопределения в подклассе, обычно реализуется как неоперативный и вызывается базовым классом. (Концептуально, я думаю, это нулевой метод вместо нулевого объекта). Они существуют как точки расширения, и именно так они используются в этом случае.

2 голосов
/ 29 ноября 2011

Шаблон Null Object должен соответствовать всем требованиям.Это в основном означает, что у объекта есть методы, тела которых пусты.И MouseAdapter, и WindowAdapter следуют этому шаблону, не имея исполняемого кода в своих методах.

Википедия: Шаблон пустого объекта

1 голос
/ 29 ноября 2011

Я не думаю, что он использует шаблон дизайна.самым близким может быть шаблон разработки стратегии , если вы посмотрите на прямые известные подклассы адаптера мыши , но это не совсем правильно (для меня).

...