2012-03-21 73 views
2

爲什麼STL會考慮一個庫,但JCF是一個框架?究竟是什麼在他們各自的設計中導致/證明了這種區別?你能給出一個說明這個的代碼示例嗎?STL庫vs JCF框架

+2

我認爲,一個圖書館您的代碼使用庫,而用一個框架的框架使用你的代碼。大致。使用框架,您的代碼必須符合框架,它必須適應框架,並且主要限於框架支持的內容。 – 2012-03-21 20:01:30

+0

如果我將比較器傳遞給'std :: sort',是不是也使用我的代碼的STL? – fredoverflow 2012-03-21 20:03:18

+0

我不確定分界線的確切位置。但這是一個控制反轉程度的問題。使用'std :: sort'你只需要自定義一個庫函數的特定調用,而在一個框架中,你可以在一個「Sorter」函數類中重寫一些比較函數並創建該類的一個實例,排序? – 2012-03-21 20:12:03

回答

3

定義由Martin Fowler:

一個實際上是一組的,你可以調用功能,這些 天通常分爲類。每個呼叫都有一些工作,並且 將控制權返回給客戶端。

一個框架體現了一些抽象的設計,更多的行爲在建 。爲了使用它,你需要插入您的行爲變成可以通過繼承或通過在 自己的類插入框架中的各種 地方。該框架的代碼然後在這些 點處調用您的代碼。

更多的討論,你可以在這裏找到: What is the difference between a framework and a library?

+0

你有一個JCF調用我的代碼的例子,但是「等價的」STL例子沒有嗎? – fredoverflow 2012-03-22 09:36:58