1
2
在函数式编程(FP)风格中,我们经常设计我们的函数,这样我们就不需要保持这些引用同步。
考虑这个场景:创建堆栈
为了解决这个问题,函数方法不使用这种隐式引用,而是将引用作为显式参数传递到函数中:
当然,有时这会很痛苦,因为函数现在有一个额外的参数。每一个打电话的人
partial application
Functional approaches to dependency injection :
还有,马克·希曼——这本书的作者 Dependency Injection --有一个有趣的系列节目 Dependency Rejection .
如果您不能忍受这种痛苦,那么只需中断CQS并返回到堆栈的传统实现。毕竟,如果一个函数(如
即使在这种情况下,一些FP语言也提供了一种消息传递机制,这样您就可以以不编写代码变异数据(例如,使用赋值符号的代码)的方式实现可变堆栈。 MailboxProcessor 在F#中就是这样一种机制。 希望这有帮助:) |
2
0
如果您在下面的最小参与方代码中使用出列结果来补充bool,这将允许您区分成功和失败以及潜在的其他信息。
如果Head==Null返回 ... 返回真值 更符合CQS的可能是 让出列=功能节点() 但需要Head有一个特殊的Node.Null值,以尝试区分失败和争用。 如果可以在结果中指出更多有关失败的信息,则返回出列结果可能会更好。 |
Vedant · 如何解决python啦啦队长问题?[已关闭] 2 年前 |
cobby · 在战略模式中使用工厂模式? 2 年前 |
Nobody · Java中带while循环的三角形模式 2 年前 |
Eduard Stefanescu · 如何在层之间传输异常? 6 年前 |
D. Schreier Talha Noyon · 对于目录中的每个类 6 年前 |
Tanvi Jaywant · 如何重载类 6 年前 |