我们有一个在多个层中实现的java系统.在最低级别,有一些服务可以抽象出一系列基础架构组件,例如数据库,blob存储,处理队列等......最重要的是,我们有域层实现使用其中一个或多个的工作流服务(使用命令和复合命令模式).最后,在其上面有一个基于jax-rs(jersey)的层,它提供了根据域层的工作流实现的REST接口/协议.
我对Scala的经验是有限的,但我怀疑它可能是编写更具表现力的域层版本的好工具,因为Java代码非常冗长且有时难以调试.部分原因是命令组合和执行的控制由具体命令扩展的基类处理.事后看来,这可能不是一个理想的设计选择.
我希望这个非常高级别的描述能够说明我想要实现的目标.如果我需要更具体,请告诉我.我最感兴趣的是如何在保持基于Java的服务层的同时使用Scala构建域层.此外,关于如何在域层之上实现http/REST协议以便可以将其部署在java Web应用程序容器中的建议也将非常有趣.
我已经看过一些博客Pimp my Library pattern,这些似乎适用于向类添加行为.
但是,如果我有一个case class,我想要add data members它呢?作为一个案例类我不能扩展它(从案例类继承被弃用/强烈建议不鼓励).这些pimp模式是否允许我将数据添加到案例类?