MouseAdapter: какой шаблон он использует?

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

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

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

Ответ 1

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

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

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

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

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

В чем он ее адаптирует? Я бы сказал шаблон шаблона метода. В частности, он преобразует методы реализации интерфейса в "операции с крючками". Операция hook - это метод, который существует для переопределения в подклассе, обычно реализуется как no-op и вызывается базовым классом. (Концептуально, я думаю, это Null Method вместо Null Object). Они существуют как точки расширения, и именно так они используются в этом случае.

Ответ 2

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

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