Я работал над несколькими проектами, которые включают загрузку данных, иногда удаленно, иногда локально, иногда JSON, иногда XML. Проблема, с которой я сталкиваюсь, заключается в том, что из-за скорости разработки и изменения взглядов различных клиентов я считаю, что мои проекты слишком жесткие, и я хотел бы, чтобы они были более гибкими. Я пытался придумать многоразовое решение для загрузки данных и хотел бы получить совет, так как полагаю, что у многих из вас была такая же проблема.
Я бы хотел создать общий Абстрактный класс LoadingOperation , который имеет переменные-члены типа Parser и Loader , которые имеют методы parse () и loadData () соответственно. Классы Parser и Loader - это интерфейсы и классы, которые реализуют их, могут быть XMLParser и JSONParser, LocalLoader и RemoteLoader и т. Д. С чем-то вроде этого я хотел бы иметь новый класс, который расширяет LoadingOperation для каждой вещи, которая должна быть загружена, будь то локальный файл XML, удаленный JSON или что-то еще.
Проблема в том, что конкретная реализация Parser не может возвращать пользовательские типы данных без нарушение полиморфного поведения класса LoadingOperation . Я возился с дженериками и объявлял подклассы LoadingOperation , например
class SpecificLoader extends LoadingOperation
, и делал аналогичные вещи с классами Parser , но это кажется немного странным.
Есть ли у кого-нибудь предложения о том, что я делаю неправильно / мог бы сделать лучше. Я хочу иметь возможность быстро реагировать на изменение спецификаций (игнорируя тот факт, что они не должны так сильно меняться!) И иметь логическое разделение кода и т. Д.
спасибо за любую помощь!
edit: question also спрашивается здесь текст ссылки