我是c#编程的新手,我为我的初学者级问题道歉。我试图谷歌关于这种模式,但一直没有成功。在网上了解c#MVC / WCF时,我遇到了各种使用以下模式或技术的示例:
public PaperResponse GetPaperResults(LearnerPaperRequest request)
{
return LearnerResponse.GetPaperResults(request);
}
,其中
public static class LearnerResponse
{
public static PaperResponse GetPaperResults(LearnerPaperRequest request)
{
//do work by calling Business logic layer or do work here itself like calling service or db
return paperResponse;
}
}
我正在尝试找到此模式或技术的名称,以便我可以阅读有关此模式或技术的更多信息。
答案 0 :(得分:0)
根据最少量的代码,我冒昧地回答:
静态类LearnerResponse
在图层模式中扮演Facade的角色(可能)。评论清楚地表明它处理业务逻辑。 Facade类不必具有静态方法,但Java中有几个例子,如JOptionPane。
假设类X
在另一层(例如,表示层或GUI)中,在那里处理业务逻辑是不明智的,因为我们经常为与用户的不同交互制作不同的表示层。
一个很好的例子是iOS上的Siri,它可以进行语音识别。当你向Siri询问“播放艺术家Led Zeppelin”时,这是一个等同于点击GUI以选择艺术家音乐的命令。识别,呈现等的代码是不同的,但业务逻辑(开始播放操作)是相同的。如果我们将业务逻辑放在表示层中,当我们创建一个新版本的层时,我们就会重复我们重复逻辑。
以下是UML中示例代码的动态:
在此图表中,类X
和Y
是将调用LearnerResponse
外观的图层的变体。他们都需要执行GetPaperResults操作,但由于它是业务逻辑,设计会将该职责委托给另一层(超出外观)。
此模式也是使用indirection的变体,它也实现了protected variations(information hiding and related to encapsulation and abstraction的一种形式)。它允许在不破坏LearnerResponse.GetPaperResults()
和X
类的情况下更改Y
的实现,前提是方法的签名不会更改。
你甚至可以争辩说this is a form of the open-closed principle,因为LearnerResponse
可以对其客户进行扩展。
答案 1 :(得分:0)
委托,不是真正的模式,更像是迷你模式。许多模式依赖于委托,但它本身并不被视为一种模式。