类已死,接口万岁: Qi4j提出面向组合编程思想
艾晋
2023-12-01
本周Rickard Oberg在oredev上宣布推出Qi4j,并宣称“类已死,接口万岁”。Qi4j带来了面向组合编程的新思想,提出类中不再放有任何的行为,取而代之的是,类成为混入(mixins)的‘组合’,并在类中使用标注定义接口。
Qi4j本身是一个提供给所有java开发者使用的面向组合编程的Java框架。尽管面向组合编程需要较大的思想转变,但是面向组合编程不需要单独的工具、语言或XML。Qi4j的应用程序可以在Spring应用软件、Web应用容器、OSGi和其他地方运行。Qi4j大量使用了标注,以此摆脱框架特定的知识,让开发者更关注业务规则。项目创始人Rickard Öberg和Niclas Hedhman在新闻稿中这样描述:
Niclas Hedhman说:“Qi4j是一个以领域为中心的应用开发框架,融入了从面向方面编程、依赖注入和领域驱动设计演化而来的思想,利用了Java 5平台和其生态系统”。Niclas Hedhman是长期从事于Java框架的开发者,并且现在是Apache的活跃成员。
Rickard Öberg说:“我需要一个能使领域模型和业务规则再度成为关注焦点、让领域专家和开发者能够清晰沟通的系统” 。Rickard Öberg是以前JBoss、Webwork和XDoclet的创始人。
由于这仅仅只是框架和范型最初的展示,文档和例子还比较少。但是,面向组合编程的目标是完成从对象思考到组合思考的转变。组合由可复用的片段(fragments)组成。片段是Qi4j的组成块 。片段携带组合成员的状态(在mixins(混入)中)、验证和约束它们的使用(在约束(constraints)中)、处理横切点(在关注点(concerns)中)、并提供通知、缓存和撤销管理,以及其他异步需求(在副作用中)。编程范型的转变并不是件容易的事情。Oberg这样描述对面向组合编程的反应:
人们一贯有两种反应:一是试图从脑海中扫除源于旧有经验的坏主意而头疼欲裂,一是理解我们所提思想的潜力而发出心领神会的微笑。
Qi4j仍在更新,并且不稳定。此时,他们仍在致力于稳定框架,同时将面向组合编程思想推介给社区,希望借此获得继续发展。他们也承认目前还没有充分准备好让大家深入到这个框架中,并建议大家在未来数个月中先侧重于概念理解。