Сериализованная версия массива пользователей будет хранилищем пользователей, в то время как сериализованная версия массива ролей будет хранилищем ролей, как показано на рис. 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

Hosted by uCoz