разработка гибкого механизма поиска пользователей

2

Итак, есть внутреннее почтовое приложение, которое имеет разные установки в компании (различные отделы).

Когда в систему приходит электронное письмо, мне нужно выполнить поиск по адресу электронной почты. Каждый поиск будет отличаться, в зависимости от установки отдела.

например. Когда электронное письмо поступает в бухгалтерию, поиск по электронной почте будет специфичным для конкретной базы данных.

Когда в отделе продаж приходит сообщение , поисковые запросы будут специфичны для нашей клиентской базы данных.

Поскольку каждая пользовательская база данных поиска отличается, мне нужно разработать очень гибкий механизм поиска пользователей, чтобы можно было легко управлять кодом отдела.

Каков наилучший способ разработки этого типа функций?

Теги:
oop
design

2 ответа

2

Создайте интерфейс следующим образом:

interface ILookUpEmail
{
    Email GetEmail(string email);
}

У вас может быть много классов, которые реализуют этот интерфейс с их собственной логикой. Это отменит ваш код, позволяя вам установить тип LookUpEmail, который вы используете, и упростите тестирование каждой реализации и контроллера для поиска по электронной почте. Вы будете внедрять State Pattern, а также следовать принципу Open/Closed для вашего метода поиска электронной почты. Другой вариант - использовать Factory Pattern, имеющий класс, который возвращает правильный класс EmailLookup.

0

Существует несколько способов достижения желаемой функциональности. Вы можете использовать стратегию в сочетании с шаблоном Factory. Factory создаст вам правильный алгоритм (стратегию) с учетом некоторой информации о времени выполнения (например, идентификатор отдела). Эти алгоритмы могут все реализовать интерфейс ILookUpEmail, предложенный Юрием Факторовичем, поэтому вам не нужно действительно знать, как работают эти алгоритмы (они принадлежат домену бизнес-правил и в идеале не должны сочетаться с реализацией вашего приложения электронной почты, поскольку правила могут часто меняются, и из-за этого вам не нужно перекомпилировать все приложение).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню