Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 这是一种常见的设计模式吗?_C#_Design Patterns_F#_Functional Programming - Fatal编程技术网

C# 这是一种常见的设计模式吗?

C# 这是一种常见的设计模式吗?,c#,design-patterns,f#,functional-programming,C#,Design Patterns,F#,Functional Programming,我在应用程序/程序中经常使用以下模式/样式,我想知道这是否是我不知道的常见模式 当我必须编写一个类似于从不同来源获取输入数据的大型函数的应用程序时,请进行处理并创建输出。就像IPO模型(输入过程输出) 我有一个类/类型,它只表示没有逻辑的状态/数据。大多数情况下,我将其命名为Context、ExecutionContext或RuntimeContext。我还有多个类/类型,它们只包含作为无状态函数的逻辑(在C#静态类中的静态方法中)。在应用程序的入口点之后,我首先创建上下文,然后将其用作函数的参

我在应用程序/程序中经常使用以下模式/样式,我想知道这是否是我不知道的常见模式

当我必须编写一个类似于从不同来源获取输入数据的大型函数的应用程序时,请进行处理并创建输出。就像IPO模型(输入过程输出)

我有一个类/类型,它只表示没有逻辑的状态/数据。大多数情况下,我将其命名为Context、ExecutionContext或RuntimeContext。我还有多个类/类型,它们只包含作为无状态函数的逻辑(在C#静态类中的静态方法中)。在应用程序的入口点之后,我首先创建上下文,然后将其用作函数的参数。上下文保存应用程序的状态/数据,我的所有静态函数/方法都操作上下文。在函数链的末尾,调用/执行完成,如果需要outputdata,上下文将保持最终状态

我尝试创建一幅图片,将这些方法形象化

这些模式的优点是

  • 我可以用 单元测试
  • 使用并发代码并不难(只有上下文需要线程安全代码)
  • 对其他系统的依赖关系在上下文(例如IDbContext)中主要作为抽象(接口)解耦。这使得更大范围的测试变得简单
  • 现在是我的问题。这是一种常见的模式吗?如果是,它是如何命名的

    谢谢你的提示!:)


    关于

    当您向ASP.NET MVC发出请求时,它有一个条目,最后返回一个输出。ASP.NETMVC是开源的,有很多图表解释了整个管道及其工作原理。它也是非常可定制的,因此开发人员可以插入自己的类,拦截某些事件,钩住某些部分(过滤器、身份验证、授权等)

    如果我是你,我会开始研究这个问题,并从中借鉴一些想法。您不必查看源代码。您可以从查看管道的图表开始,看看它在做什么以及如何做

    现在,您的代码只是以串行方式执行的函数。如果您想使用面向对象,利用接口并允许定制、事件拦截、挂钩等,那么这将很困难


    如果您感兴趣,请参阅图表。

    好吧,这在IoC风格的应用程序中很常见,其中服务/存储库是单例的,因此是无状态的

    这种方法的优点是节省了大量内存和时间(无需生成新的组件实例)。缺点是,如果没有强大的接口支持和IoC/依赖注入容器,您可能会丢失OOP方法,并且很难在更大的范围内进行维护

    另外,请看一下.NET中的内置机制—这样您就不需要显式地传递上下文,而不需要访问包含它的作用域全局变量(但是,您需要注意线程分支,这是IoC/DI处理的另一个主题)。

    这看起来像是一个问题


    这些函数是作用于提供给它的数据的黑匣子。数据流是图灵完整的,甚至可以对传统的命令流控制结构建模。

    您可能希望将其带到软件工程交换。您能用示例代码支持您的图表吗。您的图表没有显示您在文本中描述的接口/类。根据我所见,最适合的可能是抽象工厂或责任链。不过这里有很多东西需要探索。谢谢你的提示。这个链接有助于我的学习search@user1481065我已经实现了一个完整的数据流系统,它具有模拟控制流结构所必需的属性。如果你想了解更多细节,请给我留言。