Просто ищите рекомендации относительно структуры, которую я использую в некотором коде обработки сообщений.Обмен переменными между расширениями абстрактного класса
Сообщения, которые я обрабатываю, являются, по существу, строками с различными «сегментами». Я написал несколько классов для обработки сегментов (один тип сегмента для каждого класса). Считыватели сегментов являются расширениями абстрактного класса, который включает в себя общие методы. Наконец, каждый читатель сегментов имеет общедоступные, а также частные методы. Теперь первая версия кода передает сообщение конструктору каждого читателя сегмента, как это требовалось:
SegmentReaderType1 r = new SegmentReader1(message)
String item = r.getSomethingInteresting()
Это кажется очень неуклюжая - поэтому я попытался (используя статические методы):
String item = SegmentReaderType1.getSomethingInteresting(message)
Это кажется более чистым, однако некоторые читатели сложны внутри, поэтому есть много сообщений (внутри) сообщения (я понятия не имею, хорошо это или плохо?).
В качестве альтернативы, мне было интересно, существует ли механизм, посредством которого я мог бы «поделиться» посланием от абстрактного родителя к читателям? Может быть, синглтон MessageHolder станет лучшим выбором?
Код работает, однако я действительно пытаюсь разработать лучшие методы кодирования. Любая помощь оценивается
С помощью Singleton я думал больше о сохранении сообщения один раз в MessageHolder.getInstance(). SetMessage (message), а затем обратился к нему с помощью метода в абстрактном классе: String message = getMessage(), который просто вызывает MessageHolder .getInstance(). getMessage() – skyman
Я полагаю, что статическое поле в абстрактном классе будет видно всем расширениям класса? – skyman
Да. Еще лучше сделайте защиту статичной, поэтому только классы из одного пакета и расширения могут использовать ее. Я бы не стал MessageHolder, если бы был вами, это заставит вашу программу действительно запутать. – reederz