在不同的OOP语言中实现DCI(数据,上下文,交互)架构的设计有哪些?我想到了基于策略的设计(Andrei Alexandrescu)的C ++,DI和AOP for Java。但是,我还考虑过使用State设计模式来表示角色和某种用于交互的Template方法......还有其他可能性吗?
答案 0 :(得分:6)
在大多数语言中,做纯DCI很难,通常会遇到两个问题之一。静态类型语言(如Java)通常最终会出现某种包装解决方案,从而产生self schizofrenia问题。允许您在运行时随意附加新实例方法的动态语言通常会遇到范围问题。当对象不再扮演角色时,RoleMethods仍然可用。
我知道最适合不同的语言
如果您查看fullOO,您会找到几种语言的示例。包括在我自己的项目Marvin中,这是一种专门用于支持DCI的语言。目前Marvin的大多数都与C#完全相同,所以你可以说它是C#的扩展而不是它自己的语言。
答案 1 :(得分:2)
在Java中,如果没有字节码生成,我会将Decorator模式用于上下文,但是我将代替类装饰接口,这将更灵活。数据将通过实现接口的类表示。将使用手动依赖注入到Template方法中完成交互。