我要为我的客户创建一个应用程序。他的多个客户(我的客户)将登录到该应用程序,并做同样的事情。因此,在这种情况下,我们有一个“通用应用程序”:只编写一次,适合每个客户的需要。
但是,在编写第一行代码之前,我们有第一个例外:当客户端A执行操作A时,您必须执行与客户端B、C和D相同的操作,而且.
当然,我们可以等待更多第一次想到的“人人共享的流程”的修改。
没有问题,不能预见所有,而且源代码是灵活的。
但是,我预见到我的源代码中有各种各样的if语句:
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问题的:)
发布于 2010-10-31 12:23:29
处理这些事情的一个好方法是战略模式。您可以为所有客户端实现默认策略,并为具有特殊行为的客户端子类。您的源代码中的if将由多态处理。
不改变接口的额外处理(例如检查不变量或类似的东西)可以使用装饰图案实现。
两者的不同之处在于,装饰器模式的目的是扩展功能,使用策略模式,您实际上可以更改实现。
这两种解决方案都假设您可以为所有客户端定义一个接口,从而可以利用多态性。
https://stackoverflow.com/questions/4063048
复制相似问题