【发布时间】:2012-04-06 09:42:53
【问题描述】:
为什么将 STL 视为库,而将 JCF 视为框架?在他们各自的设计中究竟是什么导致/证明了这种区别?你能举一个代码例子来说明这一点吗?
【问题讨论】:
-
我认为,对于库,您的代码正在使用库,而对于框架,框架使用您的代码。大致。对于框架,您的代码必须适应框架,它必须适应框架并且主要限于框架支持的内容。
-
如果我将比较器传递给
std::sort,STL 不是也在使用我的代码吗? -
我不确定分界线到底在哪里。但这是控制反转程度的问题。使用
std::sort,您只是自定义库函数的特定调用,而使用框架,您将覆盖“排序器”仿函数类中的一些比较器函数并创建该类的实例,有点? -
Java 使用简单的
Comparator接口和compare方法。您将实现该接口的类的对象传递给Collections.sort...我真的看不出任何概念上的区别。 -
我相信“框架”在这里被用作流行语,
framework听起来比库设计更好,例如来自Oracle Site -..the best-known examples of collections frameworks are the C++ Standard Template Library (STL) and Smalltalk's collection hierarchy所以甚至 Oracle 也将 STL 视为“集合框架”。
标签: java c++ collections stl terminology