Сериализованная версия массива пользователей будет хранилищем пользователей, в то время как сериализованная версия массива ролей будет хранилищем ролей, как показано на рис. 26.3.
Рис. 26.3. Сериализованные версии массивов SimpleUser/SimpleRole
Другой аспект дизайна, о котором необходимо подумать — способ обращения к хранилищу. По сути дела, для каждого хранилища необходим только один экземпляр в памяти, чтобы сэкономить ресурсы и избежать слишком частой загрузки XML-файлов. Вы можете реализовать это посредством шаблона Singleton (Singleton pattern) — решения, гарантирующего, что в процессе существует только один экземпляр класса. Это обеспечивает приватный конструктор и общедоступный статический метод для получения экземпляра. Этот общедоступный метод проверяет, не существует ли уже экземпляр, и если нет, автоматически создает его и возвращает.
Рассмотрим все эти аспекты на основе класса UserStore, представленного на рис. 26.3.
private string _FileName;
private List<SimpleUser> _Users;
private XmlSerializer _Serializer;
private static Dictionary<String, UserStore> _RegisteredStores;
private UserStore(string filename)
{
предыдущая следующая страница вначало главы оглавление
1029