框架是開發規則(開發文化) + 規劃好的主幹,開發者只能照著框架的架構、依照空格填內容;套件是一個或多個功能、模組,開發者需要什麼功能、就拿來用。
控制反轉 IoC 則是透過職業(框架)把主動技能變成被動技能~

最近在公司內部與同事溝通時,一直覺得自己講的話 (特別是名詞使用) 要精確,才不會讓人聽得不舒服,但更重要的應該是 “在對的時機使用對的詞”。
以下就跟小夥伴們分享我的爬文 with AI 的小筆記與歷程,希望有所幫助,當然啦,有錯不吝指正!

最細最靈活|函式庫(庫) Library
就拿 Subway 來說,假設今天 Subway 推出了一個 “樣樣自由選、配菜隨你搭”的自助餐方案,那套件/ 庫就像是各種麵包、肉、生菜、醬料都攤在你面前,你想加什麼料、想加什麼醬或不想要什麼菜都可以自己決定。
用一句話來說,套件是你需要什麼功能就拿來用。
一包好東西|套件 Package
裡面可以裝 函式庫(庫) Library、框架 Framework,也可能是工具,端看你抓的是什麼 Package。
現成但架構固定|框架 Framework
一樣是 Subway 來當舉例,今天,Subway 推出的是快閃午餐套餐,這個商業午餐套餐框架就一定是潛艇堡 + 飲料的組合。
其中,還限定你潛艇堡一定要加 “麵包+醬料+生菜+肉+醬料” 這樣的架構(組合),你可以選擇麵包要用白麵包還是全麥麵包,肉可以選擇加量或正常,菜可能全加或隨便(不指定, 當不指定時框架可能有預設的內容)。
但總之,今天你選擇走進 Subway、選擇要吃 Subway 這個商業午餐套餐框架,就要照著該框架的流程、架構 (或者說開發文化會更清晰一點) 去走;當你今天不知道要吃什麼的時候,選了午餐框架就方便快速,儘管不是每樣功能(菜、肉、飲料)你都會用到(或者想用)。
也如同各式各樣的”套餐”例,今天你選擇了 KFC 的蛋塔自由套餐 (蛋塔框架),那就一定要選擇 “蛋塔+飲料” 這些品項 (這幾個流程的內容要提供),你可以自己選擇,也可以不選擇,但店員就是會依套餐內容給你應該要給你的內容。
用一句話來說:框架式開發規則 +規劃好的主幹,你將程式寫進去。
有現成也靈活|開發套件 SDK, Software Development Kit
還是那個越想越餓的 Subway,如果今天是 Subway SDK,那就是食材 (套件)、套餐 (框架) 跟廚具 (開發工具) 都全部給你了~
一套開發套件可能包含 Library, API 文件, 範例程式, 測試工具與驅動程式等。
控制反轉 IoC, Inversion of Control
控制反轉 IoC 是什麼?乍一看蟲還真的是 “都是中文,但組在一起就是看不懂”,那是什麼時候提到的這個詞的呢?是在”框架 vs. 套件的概念比較”時所討論到的。
綜合上面框架與套件的說明,套件就像:你是司機、套件是導航軟體,你決定開去哪裡是你的自由,套件(導航軟體)只是你可以使用的工具;框架就像一日遊的巴士,你今天的行程 (去哪幾個點) 都固定了,但你可以決定這些點你要怎麼玩。
也就是說,套件與框架最大的本質差異就是控制反轉,也就是你不再主動去呼叫某個功能,而是把控制權「交給框架/容器來控制」你的程式流程。
一般寫程式就像自己在下指令:「我現在要連資料庫 → 我現在要發 API → 然後處理回應」,而IoC 的世界是:「框架告訴你『你只要寫好這些對應的程式,該用的時候我會自己叫它們』」。
常見的語境包含:
- 框架的設計邏輯討論 → 「這個框架的生命週期是 IoC 控制的,我們只需實作 controller/view」
- 架構設計或設計模式教學 → 「這邊用到了依賴注入(DI),這其實是一種 IoC 的實作方式」
- 跨團隊協作開發 → 「這隻服務的初始化順序是反轉過來的,註冊在 IoC container 裡會自動載入」
用遊戲來說,就是把主動技能變成被動技能!
IoC 就是把功能變成被動技能,例如,當角色血量低於多少時,原本的治癒技能因為被 IoC 化了,因此當條件觸發時,角色的職業(職業 = 框架,因為職業有固定的成長路線)的被動技能 (絕處逢生 lv.1) 就會自己去施放治癒技能。
也就是:「你寫好『治癒技能』的邏輯,不自己發動它;當角色血量變低時,框架會自動幫你觸發這段技能。」
這就是 IoC 的精神:你提供邏輯,但流程交給框架管理。
相關好處如:
- 提升模組化與可維護性
- 降低耦合與提升可測試性
- 讓開發者專注於功能本身,而不是流程控制
- 易於擴展與應對大型專案
總結
函式庫(庫)是?庫是你需要什麼功能就拿來用。
框架是?框架是開發規則 +規劃好的主幹,你將程式寫進去。
SDK是?套件+庫+開發工具都給你。
IoC是?IoC 控制反轉是用職業(框架)設好條件,把主動技能變成被動技能。
