некоторое время назад мы внедрили олицетворение в наше приложение (систему DMS). Мы сделали это, потому что пользователи не должны иметь доступа к физическим файлам страниц документа.
Таким образом, пользователь входит в наше приложение, имитирует другого пользователя и получает доступ к нужным файлам из нашего приложения.
Когда планировалось это подражание, мы не думали, что это будет здорово: пользователь подражает одному разу, и все в порядке. Мы внедрили код в существующие методы там, где это было необходимо (например, Impersonation = true или Impersonation = false).
Это было неправильно: олицетворение приходилось включать и включать в нескольких местах (например, когда пользователь хочет отправить документ в виде электронного письма, вы должны отключить олицетворение, чтобы использовать почтовый профиль пользователя), поэтому всякий раз, когда мы добавляем новую функциональность, которую мы должны протестировать с и без подражания.
Поскольку у меня есть дополнительные функциональные возможности для реализации, я бы хотел избавиться от этого поведения, чтобы получить чистый подход. Но я не имею понятия, что может быть лучшим подходом.
Первым, что приходит мне в голову, будет шаблон состояния, но это приведет к созданию олицетворенного класса и не олицетворенного класса для всех классов, в которых действует олицетворение. Это увеличит количество классов.
Другое дело - указатели на методы: при использовании олицетворения вызовите олицетворенную версию функции, иначе вызовите не олицетворенную версию функции.
Это привело бы к большему количеству методов. Лучше, чем государственный подход? Я так не думаю.
Итак, каков будет ваш подход к получению чистого решения?
(Я уже думал об использовании потоков, но это кажется очень сложным)
Надеюсь, вы сможете мне помочь.
С уважением,
Inno