Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Почему класс InputStreamReader является адаптером, ведь он меняет функциональность?

Хаку Ученик (32), на голосовании 1 год назад
А адаптеры не должны менять функциональность, они же меняют только интерфейс
Ведь InputStreamReader добавляет возможность для потока in . read() быть символьным, а не байтовым
Да и декоратором он быть не может потому что интерфейс меняется
Голосование за лучший ответ
MrReikent Знаток (256) 1 год назад
Класс InputStreamReader является адаптером потому что он преобразует байтовый поток в символьный поток, что позволяет использовать его вместо ожидаемого символьного потока. Адаптеры, несмотря на то, что они могут менять функциональность, обычно сохраняют совместимость с интерфейсом, чтобы объекты, использующие адаптер, могли работать с ним без изменений.

Декораторы, с другой стороны, добавляют новую функциональность к существующему объекту, не изменяя его интерфейс. InputStreamReader не изменяет интерфейс потока Reader, но добавляет дополнительную функциональность для работы с байтовыми потоками.

Таким образом, можно сказать, что InputStreamReader является адаптером, поскольку он меняет функциональность, но сохраняет совместимость с интерфейсом Reader.
Похожие вопросы