Я работаю над унаследованной системой, в которой есть некоторые проблемы с дизайном, которые недовольны "умными словами", а некоторые мне лично не нравятся.
Это программа обработки запасов и продаж для магазина комиксов.
У меня есть класс Article
, который может быть любым предметом (Магические карты, игрушки), и класс Publication
, унаследованный от Article, который представляет книги и журналы. Publication
имеет авторов и, при необходимости, номер выпуска, а статья - нет.
Есть редактор статей, который представляет собой графический интерфейс для создания и изменения статей. Поскольку существует возможность загрузить публикацию с ошибкой, а не добавить номер тома, интерфейс для работы со статьей:
Article a = EntityManager.loadArticle(articleId);
ArticleEditor editor = new ArticleEditor(a);
a = e.getValue();
разрешить превращение a в Публикацию, если возникнет такая необходимость.
Одна из моих мозгов состоит в том, что с этим можно справиться более изящно, если бы он использовал ссылки, или, по крайней мере, так мне показалось. Моя текущая версия использует обтекание шаблона последних двух строк в статической версии, но все равно выглядит уродливо, потому что выглядит слишком зависимым от состояния.
Вторая проблема связана с отсутствием множественной диспетчеризации в Java (и в большинстве "корпоративных" языков): EntityManager имеет метод save()
, перегруженный как для Article
s, так и Publication
s. Это вызывает огромную проблему, если я скажу, например:
Article a = EntityManager.loadArticle(articleId);
ArticleEditor editor = new ArticleEditor(a);
a = e.getValue();
EntityManager.save(a);
В настоящее время это "решается", когда ArticleEditor сохраняет изменения (что кажется неправильным).
Я уверен, что должен быть какой-то способ изменить дизайн, чтобы устранить эти проблемы. (Я не против переписать, если это будет необходимо.)
Как настроить дизайн для устранения этих проблем?
Редактировать: в публикации есть и авторы, не только числа.