У меня есть список только для чтения, который является общим для всех экземпляров приложения и не будет меняться очень часто. Является ли хорошей практикой создание свойства в статическом классе для доступа к этому списку? список заполняется из базы данных в статическом конструкторе. Настройка пула приложений на переработку каждую ночь гарантирует, что список будет обновляться каждый день правильно? Есть ли какие-то причины, это плохая идея? Благодаря!Хорошо ли это для статического класса?
ответ
Ничего плохого в статическом классе. Вы также можете использовать кеш, который будет работать аналогичным образом. Кэш дает вам дополнительный бонус, который может привести к недействительности кеша по времени по вашему выбору.
Это похоже на хорошее решение. Вместо этого вы можете использовать закрытый класс, чтобы избежать использования подклассов.
Проблема с глобальным состоянием - это когда оно изменяется приложением. В этом случае это не проблема.
Вы должны понимать, как сохраняются статические свойства.
Грубое, все статическое состояние помещается в экземпляр RuntimeType (который, в свою очередь, создается при вызове static ctor). CLR через C# описывает этот механизм в деталях.
В свете этого, эта коллекция будет доступна для всех экземпляров, но вы должны иметь в виду все потенциальные утечки памяти (представьте себе ситуацию, когда вы подписываетесь на события коллекции, и все страницы стали доступны даже тогда, когда они закрыты и т. д.)
Второй недостаток такого подхода заключается в том, что этот сборник не является современным. Третий недостаток заключается в том, что вам необходимо позаботиться о безопасности потоков этой коллекции, что, в свою очередь, повредит вашей производительности.
- 1. Является ли это хорошим кандидатом для общего (статического) класса?
- 2. Хорошо ли это использовать?
- 3. Нормализация: хорошо ли это?
- 4. Действительно ли Vim это хорошо?
- 5. Может ли кто-нибудь объяснить это свойство статического класса C#?
- 6. Было ли это хорошо проверено?
- 7. Методы вызова класса для инициализации статического класса
- 8. VSTS 2008 Нагрузочное тестирование, хорошо ли это?
- 9. Унаследовать устаревшую архитектуру COM, хорошо ли это?
- 10. ли это хорошо способ сделать Django модель
- 11. Является ли это «Тип Punning» хорошо определенным?
- 12. ли это хорошо, чтобы избежать инъекции просит
- 13. Может ли free_function быть методом статического класса?
- 14. Переопределение hashCode() - это достаточно хорошо?
- 15. Каков масштаб статического класса?
- 16. Псевдоним статического класса System.Configuration.ConfigurationManager;
- 17. Может ли расширение статического класса быть встроенным?
- 18. Postsharp: это хорошо для моих требований
- 19. Является ли это хорошо известным шаблоном дизайна? Как это называется?
- 20. Использование статического внутреннего класса
- 21. Symfony2 + ввод статического класса
- 22. Виртуализация и почему это хорошо для программистов
- 23. CodeCharge: это хорошо?
- 24. Можно ли использовать объявление 'using' для функции статического класса [C++]?
- 25. Можно ли использовать Джексон для преобразования статического класса в JSON?
- 26. Несколько вопросов статического класса
- 27. Можно ли добавить функцию статического расширения для класса Java?
- 28. Я делаю это Objective-C? (нет переменных статического класса)
- 29. Клон статического класса
- 30. __getattr__ для статического/переменного класса в Python
звучит нормально для меня. Однако ничего, что нельзя было бы сделать со структурой/(запечатанным) классом; любой тип может содержать статические члены – sehe
О, и подумайте о детях: опубликуйте свой список как немодифицируемую коллекцию. – sehe