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