程序組件耦合處理方法和相關裝置的制造方法
【技術領域】
[0001]本發明涉及計算機技術領域,具體涉及一種程序組件耦合處理方法和相關裝置。
【背景技術】
[0002]面向對象程序開發方式是目前主流的程序開發方式之一,其優點是容易實現模塊化,缺點是模塊之間的交互比較困難。因為模塊無法脫離整體程序而獨立的存在,因此模塊之間通常需要相互調用,而調用帶來耦合。這種耦合是程序本質復雜性的一部分。
[0003]很多應用程序本身非常龐大,涉及的模塊通常較多,各個模塊之間的交互變得異常復雜。很多現有技術中,主要采用消息實現應用程序的各模塊之間的耦合問題。舉例來說,應用程序中的模塊A向外發布消息,但模塊A并不關心接收該消息的對象;模塊B接收上述消息,但模塊B不關心發布上述消息的對象。
[0004]本發明的發明人在研究和實踐過程中發現,現有技術至少存在以下的技術問題:由于程序中的各個模塊之間可能經常要進行雙向通信、一對多的通信等等復雜消息耦合,這使得要分析數據處理流程的來龍去脈非常困難,需跟蹤大量的異步消息;且由于難以獲悉模塊之間的耦合關系,使得若要修改數據處理流程則非常困難,非常容易出現一些意想不到的流程分支,且難以進行問題定位和重現。
【發明內容】
[0005]本發明實施例提供程序組件耦合處理方法和相關裝置,以提高程序組件之間耦合關系的可控性和可跟蹤性,進而簡化程序代碼的復雜度。
[0006]為解決上述技術問題,本發明實施例提供以下技術方案:
[0007]本發明實施例一方面提供一種程序組件耦合處理方法,可包括:
[0008]對組件容器和N個組件進行實例化;
[0009]將實例化之后的所述N個組件注冊到實例化之后的所述組件容器之中;
[0010]當第一組件之中的組件調用邏輯被觸發,則通過所述第一組件查詢所述組件容器之中是否注冊有第二組件,其中,所述組件調用邏輯與所述第二組件之間具有映射關系;若查詢到所述組件容器之中注冊有第二組件,則通過所述組件容器獲得所述第二組件的指針,并基于所述第二組件的指針調用所述第二組件執行相應的操作,其中,所述N為正整數,所述第一組件為所述N個組件之中的其中一個組件。
[0011]本發明實施例另一方面提供一種程序組件耦合處理裝置,可包括:
[0012]實例化單元,用于對組件容器和N個組件進行實例化;
[0013]注冊單元,用于將實例化之后的所述N個組件注冊到實例化之后的所述組件容器之中;
[0014]處理單元,用于當第一組件之中的組件調用邏輯被觸發,則通過所述第一組件查詢所述組件容器之中是否注冊有第二組件,其中,所述組件調用邏輯與所述第二組件之間具有映射關系;若查詢到所述組件容器之中注冊有第二組件,則通過所述組件容器獲得所述第二組件的指針,并基于所述第二組件的指針調用所述第二組件執行相應的操作,其中,所述N為正整數,所述第一組件為所述N個組件之中的其中一個組件。
[0015]由上可見,本發明實施例的方案將程序模塊組件化,將實例化之后的若干個組件注冊到實例化之后的組件容器之中,當已注冊到組件容器之中的某個組件之中的某組件調用邏輯被觸發,可基于注冊關系通過該某個組件查詢組件容器之中是否注冊有與上述某組件調用邏輯具有映射關系的另一組件;若查詢到組件容器之中注冊有另一組件,則通過組件容器獲得該另一組件的指針,并基于該另一組件的指針調用該另一組件執行相應的操作。通過引入組件容器解耦了程序組件之間的消息耦合關系,組件間無需通過消息耦合;由于是利用獲得的組件指針來調用相應組件,因此組件之中也無需包含被調用的組件的上下文邏輯,而通過組件容器可容易的跟蹤到組件之間的調用耦合關系,可見上述機制有利于提高程序組件之間耦合關系的可控性和可跟蹤性,進而簡化程序代碼的復雜度。
【附圖說明】
[0016]為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。
[0017]圖1是本發明實施例提供的一種程序組件耦合處理方法的流程示意圖;
[0018]圖2_a是本發明實施例提供的另一程序組件耦合處理方法的流程示意圖;
[0019]圖2_b是本發明實施例提供的一種組件注冊示意圖;
[0020]圖2-c是本發明實施例提供的另一種組件注冊示意圖;
[0021]圖2-d是本發明實施例提供的另一種組件注冊示意圖;
[0022]圖2_e是本發明實施例提供的另一種組件注冊示意圖;
[0023]圖3本發明實施例提供的一種程序組件耦合處理裝置的示意圖;
[0024]圖4本發明實施例提供的一種計算節點的示意圖。
【具體實施方式】
[0025]本發明實施例提供程序組件耦合處理方法和相關裝置,以提高程序組件之間耦合關系的可控性和可跟蹤性,進而簡化程序代碼的復雜度。
[0026]下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
[0027]本發明的說明書和權利要求書及上述附圖中的術語“第一”、“第二”、“第三” “第四”等是用于區別不同的對象,而不是用于描述特定順序。此外,術語“包括”和“具有”以及它們任何變形,意圖在于覆蓋不排他的包含。例如包含了一系列步驟或單元的過程、方法、系統、產品或設備沒有限定于已列出的步驟或單元,而是可選地還包括沒有列出的步驟或單元,或可選地還包括對于這些過程、方法、產品或設備固有的其它步驟或單元。
[0028]本發明一種程序組件耦合處理方法的一個實施例,其中,一種程序組件耦合處理方法,可以包括:對組件容器和N個組件進行實例化;將實例化之后的上述N個組件注冊到實例化之后的上述組件容器之中;當第一組件之中的組件調用邏輯被觸發,則通過上述第一組件查詢上述組件容器之中是否注冊有第二組件,其中,上述組件調用邏輯與上述第二組件之間具有映射關系;若查詢到上述組件容器之中注冊有第二組件,則通過上述組件容器獲得上述第二組件的指針,并基于上述第二組件的指針調用上述第二組件執行相應的操作,上述N為正整數,上述第一組件為上述N個組件之中的其中一個組件。
[0029]請參見圖1,圖1為本發明的一個實施例提供的一種程序組件耦合處理方法的流程示意圖。如圖1所示,本發明的一個實施例提供的一種程序組件耦合處理方法可包括以下內容:
[0030]101、對組件容器和N個組件進行實例化。
[0031]102、將進行實例化之后的上述N個組件注冊到進行實例化之后的上述組件容器之中。
[0032]在本發明的一些實施例中,上述將進行實例化之后的上述N個組件注冊到進行實例化之后的上述組件容器之中,可以包括:將實例化之后的上述N個組件的指針和組件類型標識注冊到實例化之后的上述組件容器之中,或者,將實例化之后的上述N個組件的指針索引和組件類型標識注冊到實例化之后的上述組件容器之中。
[0033]在本發明的另一些實施例中,上述將進行實例化之后的上述N個組件注冊到進行實例化之后的上述組件容器之中,可以包括:將實例化之后的上述N個組件的指針和組件標識注冊到實例化之后的上述組件容器之中,或者,將實例化之后的上述N個組件的指針索引和組件標識注冊到實例化之后的上述組件容器之中。
[0034]其中,組件的指針索引是能夠索引到該組件的指針的各種信息,例如可以是組件的指針相對于某個地址的偏移量,或者其它可以能夠索引到該組件的指針的信息。
[0035]例如,上述將實例化之后的上述N個組件的指針和組件類型標識注冊到實例化之后的上述組件容器之中,可包括:在實例化之后的上述組件容器中保存N條注冊記錄,上述N條注冊記錄和上述N個組件一一對應,其中,上述N條注冊記錄中與第一組件對應的注冊記錄中記錄有上述第一組件的指針和組件類型標識。即:上述N條注冊記錄中與每個組件對應的注冊記錄中記錄有該每個組件的指針和組件類型標識。
[0036]又例如,上述將實例化之后的上述N個組件的指針索引和組件類型標識注冊到實例化之后的上述組件容器之中,包括:在實例化之后的上述組件容器中保存N條注冊記錄,其中,上述N條注冊記錄和上述N個組件一一對應,上述N條注冊記錄中與第一組件對應的注冊記錄中記錄有上述第一組件的指針索引和組件類型標識。即:上述N條注冊記錄中與每個組件對應的注冊記錄中記錄有該每個組件的指針索引和組件類型標識。