【问题标题】:designing a flexible user lookup mechanism设计灵活的用户查找机制
【发布时间】:2009-11-08 00:53:45
【问题描述】:

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

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

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

当销售部门收到一封电子邮件到达时,查找将专门针对我们的客户数据库。

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

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

【问题讨论】:

    标签: c# asp.net oop


    【解决方案1】:

    创建如下界面:

    interface ILookUpEmail
    {
        Email GetEmail(string email);
    }
    

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-12
        • 1970-01-01
        • 2013-01-17
        • 1970-01-01
        • 2015-11-26
        相关资源
        最近更新 更多