【发布时间】:2009-10-23 18:38:01
【问题描述】:
我正在尝试确定用于业务密钥验证 Web 服务的最佳设计模式。基本逻辑流程编码如下。该程序将采用一个参数并使用一个字段来帮助确定在搜索可以找到此业务密钥的多个系统时采用的路径。首先搜索System1,如果没有找到,搜索System2和System3。 System1 搜索逻辑依赖于传递给原始验证方法的参数中的一个字段。
我不确定要使用哪种设计模式。看起来命令、责任链、模板方法都可以在这里使用。
通过下面的实现,我看到了以下问题:
每个 SearchSystemX 方法都需要知道如果没有找到业务键则返回 null,以便“控制”方法继续搜索其他系统。
每个 SearchSystemX 都必须知道如何填充业务对象,目前只是通过简单的原始字符串实现,但这只是示例。
请告诉我你的想法。
public string Validate (string parms) {
string returnValue = null;
returnValue = SearchSystem1(parms);
if (returnValue == null) {
returnValue = SearchSystem2(parms);
if (returnValue != null) {
returnValue = SearchSystem3(parms);
}
else if (returnValue == null) {
if (parms == "Criteria1") {
returnValue = SearchSystem4(parms);
if (returnValue == null) {
throw new ApplicationException("ID Invalid");
}
}
else if (parms == "Criteria2") {
throw new ApplicationException("ID Invalid");
}
}
}
return returnValue;
private string SearchSystem1 (string parms) {
string returnValue = null;
if (parms == "Criteria1") {
returnValue = SearchSystem1UsingColumn1(parms);
}
else if (parms == "Criteria2") {
returnValue = SearchSystem1UsingColumn2(parms);
if (returnValue == null) {
returnValue = SearchSystem1UsingColumn4(parms);
}
}
if (returnValue != null) {
returnValue = FetchXYCoordinate(parms);
}
return returnValue;
}
谢谢!
【问题讨论】:
标签: c# design-patterns oop