Ответ 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). Они существуют как точки расширения, и именно так они используются в этом случае.