歡迎訪問昆山寶鼎軟件有限公司網站! 設為首頁 | 網站地圖 | XML | RSS訂閱 | 寶鼎郵箱 | 后臺管理
?

新聞資訊

MENU

軟件開發知識

該范例實現的功能是 勞務派遣管理系統 從控制臺中收集用戶數據

點擊: 次  來源:寶鼎軟件 時間:2017-06-28

原文出處: scilence

對付很多開拓人員來說,節制反演(IoC)都是一個恍惚的觀念,因為他們在現實世界中很少或沒有被應用過。在最好的環境下,節制反演(IoC)可以加單的認為是等效于依賴注入(DI)。實際上,只有在翻轉節制與依賴注入兩邊都只是反應翻轉依賴打點節制的時候,才認為兩者是等效的。固然,依賴注入實際上是IoC的一種眾所周知的形式??墒?,事實上IoC卻是一個相對更為遍及的軟件設計典型,可以通過多種模式來舉辦實現。在本文中,我們將先容依賴注入,調查者模式和模板要領模式如何實現節制反轉的。

正如很多其他設計模式,是從各類百般的利用場景中總結出來的,IoC的實現方法,也是雷同的一種適合開拓者利用的折中方法:

  • 一方面,高度解耦組件的設計,以及將應用邏輯封裝在一個單一的處所,是實現IoC的直接而又自然的一種方法。
  • 另一方面,上述實現需要至少需要構建一個間接層,然而在某些用例中,這大概又是一種太過設計了。
  • 接下來,不妨看幾個詳細的實現,這將有助于您相識,如安在這些屬性之間舉辦衡量折中。

    IOC范式揭秘

    節制反轉是一種帶有某些特征的模式。下面,給出了由Martin Fowler給出的一個IOC經規類型,該典型實現的成果是從節制臺中收集用戶數據。

    public static void main(String[] args) {
        while (true) {
            BufferedReader userInputReader = new BufferedReader(
                    new InputStreamReader(System.in));
            System.out.println("Please enter some text: ");
            try {
                System.out.println(userInputReader.readLine());
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    這個用例中,在main要領中舉辦流程節制:在無限輪回挪用中,讀取用戶輸入,并將讀取的內容輸出到節制臺上。完全又main要領節制何時去讀取用戶輸入,何時去輸出。

    思量下,上述措施的一個新版本,該版本中需要通過圖形界面中的文本框來收件用戶輸入,別的尚有個按鈕,該按鈕上綁定有一個action監聽器。這樣的話,用戶每次點擊按鈕,輸入的文本由監聽器收集并打印到面板。

    在這個版本的措施中,它實際上是由事件監聽器模子(在這種環境下,這是框架)的節制下,挪用開拓者編寫的用于讀取和打印用戶輸入的代碼。簡樸地說,框架將挪用開拓人員的代碼,而不是其他方法。該框架實際上是一個可擴展的布局,它為開拓人員提供了一組注入自界說代碼段的切入點。

    這種環境下,節制已經被有效的反轉了。

    從更通用的角度來看,由框架界說的每個可挪用擴展點(以接話柄現,實現擔任(也稱為子類)的形式)是IoC的一種明晰界說的形式。

    看下,下述這個簡樸的Servlet例子:

    public class MyServlet extends HttpServlet {
    
        protected void doPost(
                HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            // developer implementation here
        }
    
        protected void doGet(
                HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            // developer implementation here
        }
    
    }

    此處,HttpServlet類(屬于框架)是完全節制措施的元素,而不是MyServlet這個子類。在由servlet容器建設之后,當收到servlet的GET和POST的HTTP請求,doGet()和doPost()要領中的代碼會別離自動挪用。

    與典范的擔任方法對比,即子類是節制的元素,而不是基類,該例中,控件已經被反轉了。

    事實上,servlet的要領是模板要領模式的實現,稍后我們再深入接頭。

    利用那些通過提供可擴展API,承襲開閉原則的框架時,利用框架的開拓人員的腳色,最終被歸結為界說本身的一組自界說類,即開拓人員要么通過實現框架提供的一個或多個接口方法,要么通過擔任現有基類的方法。反過來,類的實例卻是直接框架舉辦實例化,而且這些事例是被框架挪用的。

    此處引用Fowler的話:

    該框架挪用開拓人員,而不是開拓人員挪用該框架。

    因此,IoC凡是被稱為好萊塢原則:

    不要打電話給我們,我們會打電話給你。

    IOC的實現方法

    該問題上,顯而易見的是,實現節制反轉是有幾種差異要領的。我們不妨來總結一下,那些常見的實現方法。

    注入依賴實現IOC

    如前所述,注入依賴是IOC的一種實現方法,并且是最常見的一種面向工具設計方法??墒?,思考一下:注入依賴畢竟是如何到達節制反轉結果的呢?

    排列三305组选前后关系 浙江省11选5五码走势图 辽宁11选5组选走势图 重庆幸运农场稳赚技巧 北京荣添化成配资公司 广东11选5走势图 山西十一选五遗漏 幸运28模式 娱乐商城 上证指数20年完整k线图 黑龙江11选5开奖,结果