Зачем использовать java.io.Filter *, а не расширять реализацию конкретного потока? - PullRequest
1 голос
/ 25 августа 2011

Какова цель типов java.io.Filter *? т.е. FilterInputStream, FilterReader

Разве нельзя добавить какую-либо логику фильтрации в конкретный класс потока, такой как FileInputStream, просто переопределяя определенные методы и делая вызовы super()? т.е. super.read()

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

Чего мне не хватает?

1 Ответ

2 голосов
/ 25 августа 2011

Это Pattern Decorator , который затем можно использовать для фильтрации всего, что расширяет входной поток.Это означает, что у вас есть высокая гибкость для его использования.

Если вы расширяете входной поток, то всякий раз, когда вы хотите что-то отфильтровать, вам нужно расширить этот тип входного потока.Поэтому, если вы хотите фильтровать каждый тип входного потока, вам потребуется класс расширения фильтра для каждого типа входного потока.При использовании шаблона декоратора вам нужна только одна реализация, которая принимает входной поток, и вы можете отфильтровать их все.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...