设计灵活的用户查找机制

时间:2009-11-08 00:53:46

标签: c# asp.net oop

因此,有一个内部电子邮件应用程序,在公司(各个部门)中有不同的安装。

当电子邮件进入系统时,我需要根据电子邮件地址执行查找。 每个查找都会有所不同,具体取决于部门的安装。

e.g。 当电子邮件到达会计部门时,电子邮件的查找将特定于特定数据库。

当销售部门中的电子邮件到达时,查询将特定于我们的客户数据库。

由于每个用户查找数据库都不同,我需要设计一个非常灵活的用户查找机制,以便可以轻松管理特定于部门的代码。

设计此类功能的最佳方式是什么?

2 个答案:

答案 0 :(得分:2)

创建如下界面:

interface ILookUpEmail
{
    Email GetEmail(string email);
}

您可以拥有许多使用自己的逻辑实现此接口的类。这将解耦您的代码,允许您设置您正在使用的LookUpEmail类型,并为电子邮件查找轻松测试每个实现和控制器。您将在您的查找电子邮件的方法上实施State Pattern并遵循开放/封闭原则。另一种选择是使用Factory Pattern,其类具有返回正确的EmailLookup类。

答案 1 :(得分:0)

有多种方法可以实现所需的功能。 您可以将策略模式与工厂模式结合使用。在给定一些运行时信息(例如部门ID)的情况下,工厂将为您创建适当的算法(策略)。这些算法都可以实现Yuriy Faktorovich建议的ILookUpEmail接口,因此您的程序并不需要知道这些算法是如何工作的(它们属于业务规则域,理想情况下不应该与您的电子邮件应用程序的实现相结合,因为规则可能经常更改,因此你不需要重新编译整个应用程序。