functionOO混合语言的devise模式?

Scala等语言已经有最佳实践吗?

我已经find了function语言的devise模式,function性战略编程的devise模式 。 有OO语言的GoFdevise模式。 但是functionOO混合动力车有没有什么模式? 我所见过的就是这个清单。 什么是已知的?

Bill Venners的两种模式; 我认为这两个在ScalaTest中被大量使用:

可堆叠的特质 (类似于装饰者模式的结构,除了它涉及用于类别合成而不是对象合成的装饰)。

无私特质 (允许图书馆devise者提供服务,客户可以通过混合或import访问)。

types安全build设者

expression式问题的独立可扩展解决scheme – 就像“可伸缩组件抽象”一样,它不是一个模式目录,但它也处理类似的问题(例如访问者模式)

弃用观察者模式 – 观察者的替代品。

我们也可以考虑将Haskelltypes的Scala模拟作为devise模式。 第一个描述(我至less可以find)是在穷人的types类中 。 相当一些博客条目也可以用这个主题。

如果我还提到各种单子,我想我并不完全错误。 你可以find很多处理它们的资源。

虽然不是直接的devise模式目录本身,“ 可伸缩组件抽象 ”(Martin Odersky; Matthias Zenger)论文研究了三个可重用组件的构build块:

  • 抽象types成员,
  • 明确的自我形象,和
  • 模块化mixin组成。

并重新讨论几种devise模式(发布/订阅,主题/观察者,上下文/组件),以说明和理解什么语言结构对于实现可伸缩和dynamic组件的系统是必不可less的。

一个经常被观察到的模式,非常需要一个名字,用curried参数列表和名字参数创build控制抽象。

def command(expr: T)(block: => Unit) {...} 

生产

 command (expr) { block } 

尽pipe任何Object-Functional语言都很快就会获得演员库,但大量的基于演员的模式可能符合这个问题。 Bob Martin的企业集成模式中的几乎任何模式都可以根据参与者进行重新调整,例如负载平衡器,消息filter,基于内容的路由器和内容pipe理器等模式在以粗粒度angular色为中心的系统中尤为常见。

密切相关,您可能想要探索纯function (或混合function)语言中定义的数据结构。 首先,将函数作为一级值对待的能力使一些模式(如访问者 , 模板方法或装饰器 )在一些(不是全部)上下文中是不必要的。 其次,数据结构(以及对它们进行操作的algorithm)既可以是devise模式的pipe道,也可以是devise模式试图解决的某些问题,参见维基百科文章纯粹的function

更好的是,我会把你介绍给冈崎关于纯function数据结构的论文 。