java - "Feature Oriented Programming"(FOP) 在 C++ 中有什么意义,它在 Java 和 C# 中有意义吗?

标签 java c# c++ design-patterns software-product-lines

遗憾的是,我不记得我是在哪里读到它的,但是...
...在 C++ 中,您可以从模板参数派生类。 我很确定它叫做
面向特征的编程 (FOP) 并且意味着在某种程度上有用。

它是这样的:

template <class T>
class my_class : T {
  // some very useful stuff goes here ;) 
}

我对此的疑问:

  1. 这种模式有什么意义?

  2. 因为这在 Java/C# 中不可能,这个模式如何 是用这些语言实现的?

  3. 是否有望有一天用Java/C#实现?
    (嗯,首先 Java 需要摆脱类型删除)

编辑:
我真的不是在谈论 Java/C# 中的泛型
(您不能从泛型类型参数派生类)

最佳答案

所以,我在 c++ 中看到该模式最多的地方是 mixins ( link ) 的行为,我猜这是 FOP 的一个实现。我链接的文章进入了面向方面编程的示例,以尝试在 java 中产生类似的效果。

我怀疑您是否会在其他语言中看到模板等功能(这对混合方法至关重要),尽管它们可以为 AOP 开发更好的模式。就个人而言,我认为我见过的最简单的方法是像 python 和 ruby​​ 这样的语言,它们允许操作接口(interface),但它是 c++ 编译时元编程工具的运行时机制,所以这就像比较苹果和橘子。

关于java - "Feature Oriented Programming"(FOP) 在 C++ 中有什么意义,它在 Java 和 C# 中有意义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/950516/

相关文章:

c# - 绳子神奇地自己切断

c# - aspx 可重用组件

java - JSF 2 : view-scoped bean created one time per h:form?

java - 无法使用 c 迭代 ArrayList :foreach (JSP/JSTL)

c# - 如何在创建 asp.net web 应用程序后执行 Nunit

c++ - bool vs void* 对同一个对象进行强制转换

c++ - 未初始化的字符

c++ - 如何使用 qmake 为单个源文件指定编译器标志?

Java Graphics2D 正在绘制一个像素(舍入错误?)

java - SharedPreferences 返回空字符串