首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设计问题:针对多个客户端的“通用应用程序/流程”,结果将是“但”

设计问题:针对多个客户端的“通用应用程序/流程”,结果将是“但”
EN

Stack Overflow用户
提问于 2010-10-31 12:18:50
回答 1查看 96关注 0票数 1

我要为我的客户创建一个应用程序。他的多个客户(我的客户)将登录到该应用程序,并做同样的事情。因此,在这种情况下,我们有一个“通用应用程序”:只编写一次,适合每个客户的需要。

但是,在编写第一行代码之前,我们有第一个例外:当客户端A执行操作A时,您必须执行与客户端B、C和D相同的操作,而且.

当然,我们可以等待更多第一次想到的“人人共享的流程”的修改。

没有问题,不能预见所有,而且源代码是灵活的。

但是,我预见到我的源代码中有各种各样的if语句:

代码语言:javascript
复制
if (client == "a")
{
  SetEndDate(+1);
}

else if (client == "b")
{
  SetEndDate(+10);
}
else //no enddate modification needed for other clients

if (client == "d" || client == "E" )
{
  DoExtraCheck1();
}
else if (client = "b")
{
  if ( DoExtraCheck1())
   {
       DoExtraCheck2();
   }
}
else //no checking needed for other clients

和我都很害怕!

有什么好的、优雅的解决方案来简化这个程序呢?

接下来要解决的问题当然是如果用户界面在客户端之间也发生了变化,但这是针对V2问题的:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-10-31 12:23:29

处理这些事情的一个好方法是战略模式。您可以为所有客户端实现默认策略,并为具有特殊行为的客户端子类。您的源代码中的if将由多态处理。

不改变接口的额外处理(例如检查不变量或类似的东西)可以使用装饰图案实现。

两者的不同之处在于,装饰器模式的目的是扩展功能,使用策略模式,您实际上可以更改实现。

这两种解决方案都假设您可以为所有客户端定义一个接口,从而可以利用多态性。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4063048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档