我正在尝试使用为使用 Moose OO 系统而编写的 Perl API,但对象之间绝对不涉及继承、聚合或组合。
而且,除了用于调试的单个可选角色之外,也没有涉及任何角色或混合。
就我目前所见,使用 Moose 似乎只是增加了大量的复杂性和编译时开销,而收益却很小。
为什么要使用 Moose 或 OO 作为一种简单的封装方法,而不是使用更简单的将代码打包到 Perl 模块中的技术?
澄清一下,我完全相信使用 Moose 在 Perl 中正确和完整地执行 OO 的许多优点。我只是不明白为什么要使用 OO 作为一种简单的封装技术?我不是在支持或不支持 Perl OO 的主观论点。我希望在这里使用 OO 范式时我错过了一些我根本看不到 atm 的优势。
这个问题有一系列关于 Perl 中数据封装的优秀观点。注意我不是在谈论强制封装,系统阻止您查看不应该查看的位置,更多的是仅在包中公开操作您想要使用的数据的方法。
在这里使用 OO 是否有一些我缺少的优势?
编辑1:经过一番探查工作,我刚刚看到Perl API的作者也大量参与了Moose框架的维护和支持。
编辑2:我刚刚看到这个问题,它从稍微不同的角度提出了类似的问题。看起来我的回答实际上是“你为什么要首先添加并发症?”,特别是考虑到上面编辑 2 中的信息。
可能的答案
有问题的 API 似乎只使用 Moose OO 系统来防止命名空间污染。
这也可以通过使用 Perl 包来完成,正如@amon 在下面的评论中指出的那样,使用标准包机制很快就会变得很麻烦。顺便说一句,非常感谢所有评论,以帮助澄清我的要求。