框架 Framework? 套件 Package,庫 Library?控制反轉 IoC, Inversion of Control?

IoC控制反轉

 框架是開發規則(開發文化) + 規劃好的主幹,開發者只能照著框架的架構、依照空格填內容;套件是一個或多個功能、模組,開發者需要什麼功能、就拿來用。

 控制反轉 IoC 則是透過職業(框架)把主動技能變成被動技能~

IoC控制反轉
意義不明的 AI 圖,不過怪有趣的
貓與蟲的遊記生活FBBanner

歡迎來 FB 粉絲專頁YouTube 抓住我們最新的蹤跡!

 最近在公司內部與同事溝通時,一直覺得自己講的話 (特別是名詞使用) 要精確,才不會讓人聽得不舒服,但更重要的應該是 “在對的時機使用對的詞”。

 以下就跟小夥伴們分享我的爬文 with AI 的小筆記與歷程,希望有所幫助,當然啦,有錯不吝指正!

開發說明,IoC控制反轉的遊戲比喻
蟲很喜歡的遊戲比喻。

最細最靈活|函式庫(庫) 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 控制反轉是用職業(框架)設好條件,把主動技能變成被動技能。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *