2009-11-08 40 views
2

所以有一个内部电子邮件应用程序,在公司(各部门)有不同的安装。设计一个灵活的用户查找机制

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

例如 当电子邮件到达会计部门时,电子邮件上的查询将特定于特定数据库。

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

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

什么是设计这种类型的功能的最佳方式?

回答

2

创建界面如下所示:

interface ILookUpEmail 
{ 
    Email GetEmail(string email); 
} 

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

0

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