模式或技术的名称

时间:2015-10-30 14:55:07

标签: design-patterns

我是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;
        }
    }

我正在尝试找到此模式或技术的名称,以便我可以阅读有关此模式或技术的更多信息。

2 个答案:

答案 0 :(得分:0)

根据最少量的代码,我冒昧地回答:

图层模式(可能是Facade)

静态类LearnerResponse在图层模式中扮演Facade的角色(可能)。评论清楚地表明它处理业务逻辑。 Facade类不必具有静态方法,但Java中有几个例子,如JOptionPane

假设类X在另一层(例如,表示层或GUI)中,在那里处理业务逻辑是不明智的,因为我们经常为与用户的不同交互制作不同的表示层。

一个很好的例子是iOS上的Siri,它可以进行语音识别。当你向Siri询问“播放艺术家Led Zeppelin”时,这是一个等同于点击GUI以选择艺术家音乐的命令。识别,呈现等的代码是不同的,但业务逻辑(开始播放操作)是相同的。如果我们将业务逻辑放在表示层中,当我们创建一个新版本的层时,我们就会重复我们重复逻辑。

以下是UML中示例代码的动态:

UML sequence diagram of code

在此图表中,类XY是将调用LearnerResponse外观的图层的变体。他们都需要执行GetPaperResults操作,但由于它是业务逻辑,设计会将该职责委托给另一层(超出外观)。

此模式也是使用indirection的变体,它也实现了protected variationsinformation hiding and related to encapsulation and abstraction的一种形式)。它允许在不破坏LearnerResponse.GetPaperResults()X类的情况下更改Y的实现,前提是方法的签名不会更改。

你甚至可以争辩说this is a form of the open-closed principle,因为LearnerResponse可以对其客户进行扩展。

答案 1 :(得分:0)

委托,不是真正的模式,更像是迷你模式。许多模式依赖于委托,但它本身并不被视为一种模式。