小言_互联网的博客

Java中的IoCC:一级模块

357人阅读  评论(0)

全文共2103字,预计学习时长7分钟

来源:Pexels

 

这次,小芯会介绍比往期所提到的一类程序类型更通用的模块类型系统。

 

大家准备好了吗?

 

注意:一些函数式编程语言也试图定义一级模块。本文中定义的一级模块是从反向函数创建的。

 

一类程序

 

一类程序的类型定义如下。注意,我们排除依赖项类型,因为依赖项是自动连接的。

 

FirstClassProcedureType {Class<?>parameterType;ContinuationType[] continuations;}
ContinuationType {String name;Class<?>argumentType;}

一类程序的定义,就是有一个输入参数和多个连续输出,能够进一步组合逻辑和处理异常。

 

模块

 

对于一类程序中的方法、函数等,一个输入和多个输出是很好的。然而,系统升级时,不应是输入/输出随之更复杂,而是希望输入/输出提供接口进行封装降低复杂度。请注意,没有封装,就无法将应用程序的复杂性模块化。

 

若激活模块接口,请创建以下输入/输出类型:

 

InputType {String name;Class<?>parameterType;}
OutputType {String name;Class<?>argumentType;}

为了说明为什么要创建这些类型,笔者将使用反向耦合控制的可视化配置来帮助大家理解。

 

以下模块配置由一类程序控制,表示单个输入,后输出结果:

 

 

在上述配置中,一类程序封装在模块中。模块所展示的只是输入和输出。上述模块的结果类型如下:

 

· 名为“Input”的输入,参数传递给一类程序

· 名为“Output”的输出,参数由一类程序执行的结果提供

 

然而,这对一类程序接口没有什么改进。

 

有用的是封装多个一类程序以实现模块的功能:

 

 

虽然模块中包含了新的程序,但其接口没有变动。使用该模块的其他配置不会意识到另一个第一类过程的内部添加。

 

不必局限于单一的输入和输出。可以有一个任意复杂的模块,它有多个输入和输出:

 

 

生成的模块将细节封装为具有以下接口:

 

· 输入“Input”

· 输入“输入-2”

· 输出“输出”

· 输出“输出-2”

· 输出“输出-3”

 

模块类型

 

形成的模块类型如下:

 

SectionType {InputType[] inputs;OutputType[] outputs}

模块(段)有多个输入和多个输出。这些输入/输出可以跟其他模块的相应输出/输入链接起来。

 

此外,模块本身可能包含其他模块。由于输入/输出连接用于组合,模块具有与第一类过程相同的输入/输出连接。下图配置演示如何将本文开头的模块嵌入到另一个模块中:

 

 

无论是包含一个或两个一类程序的模块,第一类过程都是封装的,在上述配置中不受关注。模块的使用仅限于模块公开的输入/输出。模块的其余部分被封装。这允许对应用程序的复杂性进行模块化。

 

来源:Pexels

 

一级模块

 

标题是“一级模块”,但我们只讨论了将模块可视化地连接在一起。

 

要想是“一级”,需要将模块分配给一个变量,当然还有其他条件。不过对我来说,这是最简单的思考一级类的方式。

 

上述图形配置是在以编程方式配置在一起的部分(模块)上构建的。图形配置实际上是一级模块(节)之上的一层,以便更清楚地展示应用程序是如何模块化的。

 

本文使用的上述图形配置的OfficeFloor实现中可以看到这一点。上面的图形配置是通过一个“活动”实现的。活动是节的特定专门化(ActivityLoaderImplsource)。该活动将XML从图形配置转换为节的创建、一类程序、输入和输出。操作的过程中每一个都被分配给变量、存储在数据结构中、传递给函数、从函数返回等,真正让节(模块)属于“一级”

 

这种基于连续性的输入/输出接口是非常灵活的,因此一类程序本身也只是一个节的特定化操作(参见ProcedureEmployer)。

 

总结

 

来源:Pexels

 

已经见证了如何在一级模块中封装一类程序,以及自身封装一级模块。

 

文章也展示了图形配置到底是怎么利用“第一类”特性的。图形配置实际上是一个更高级别的组合,它提供了:

 

· 易于理解应用程序的模块化

· 更快地配置应用程序(有效地只是为合成画线)

 

注意,以编程方式配置应用程序是完全可能的。然而,这需要更深入地理解一级过程/模块——比初级开发人员最初可能希望的要多得多。

 

因此,一级模块的图形化配置为构建模块化应用程序很简单,不必应对底层结构的复杂性。而其他组合策略仍有问题。

 

之后有机会,我们接下来将研究一级模块如何提供不同的现有组合策略的组合。

 

至此,你可能会发现,现有的组合策略只考虑了小范围的编程,范围扩大,一级模块在模块化和简化应用程序方面变得更加有效。

留言 点赞 关注

我们一起分享AI学习与发展的干货
欢迎关注全平台AI垂类自媒体 “读芯术”

(添加小编微信:dxsxbb,加入读者圈,一起讨论最新鲜的人工智能科技哦~)


转载:https://blog.csdn.net/duxinshuxiaobian/article/details/104666600
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场