本發明涉及計算機技術領域,更具體地,涉及一種業務邏輯解耦方法及裝置。
背景技術:
在應用開發過程中,通常會基于一個業務邏輯來實現另外一個業務邏輯。為實現這種功能,目前通常是在一個業務邏輯中植入另一個業務邏輯的實現方法。比如,在開發過程中,業務部門為了監控用戶的點擊事件等信息,通常會要求開發者在業務邏輯的特定位置植入打點等信息。
采用上述方式,當另一個業務邏輯的實現方法比較多時,這些實現方法都被植入前述的一個業務邏輯中,比如,打點信息的數量非常多的時候,很多的打點方法嚴重耦合到業務邏輯代碼中,這樣就會嚴重影響業務邏輯代碼的可閱讀性。同時由于打點信息與業務邏輯之間存在嚴重的耦合關系,很容易導致一些問題的產生,比如打點實現出現異常會直接導致業務邏輯無法正常運行。
技術實現要素:
本發明提供一種克服業務邏輯之間耦合性強的問題,提供了一種業務邏輯解耦方法及裝置。
根據本發明的一個方面,提供一種業務邏輯解耦方法,包括:
s1,為第一業務邏輯定義抽象類型的第一業務邏輯類;
s2,在所述第一業務邏輯類中,定義與第二業務邏輯對應的抽象方法;
s3,定義第二業務邏輯類,所述第二業務邏輯類繼承所述第一業務邏輯類;
s4,在所述第二業務邏輯類中復寫所述第一業務邏輯類中的抽象方法,通過第二業務邏輯類中的抽象方法實現第二業務邏輯。
本發明的有益效果為:將第一業務邏輯定義為抽象類,并在抽象類中預埋與第二業務邏輯對應的抽象方法,并定義繼承第一業務邏輯類的第二業務邏輯類,通過繼承的方式使得第一業務邏輯與第二業務邏輯的實現分離,降低了兩者的耦合性,避免由于第二業務邏輯出現異常影響第一業務邏輯的正常運行,同時解耦后,能夠提高代碼的可維護性。
在上述技術方案的基礎上,本發明還可以作如下改進。
進一步的,所述與第二業務邏輯對應的抽象方法有多個,所述步驟s2具體包括:
在所述第一業務邏輯類中需要實現第二業務邏輯的每一個位置,定義與第二業務邏輯對應的抽象方法,其中,每一個位置的抽象方法均不同。
進一步的,所述第二業務邏輯分為多個類型的第二業務子邏輯,每一個類型的第二業務子邏輯對應至少一個抽象方法,所有第二業務子邏輯對應的抽象方法構成第二業務邏輯的抽象方法;
所述步驟s2具體包括:
在所述第一業務邏輯類中,定義與所述第二業務邏輯對應的所有的抽象方法。
進一步的,所述多個類型的第二業務子邏輯為并行關系或者層級關系。
進一步的,當所述多個類型的第二業務子邏輯為并行關系時,所述步驟s3具體包括:
定義多個第二業務邏輯子類,所述第二業務邏輯子類的數量與第二業務邏輯的類型數量相等,其中,每一個第二業務邏輯子類均繼承所述第一業務邏輯類。
進一步的,當所述多個類型的第二業務子邏輯為層級關系時,所述步驟s2具體包括:
定義多個第二業務邏輯子類,所述第二業務邏輯子類的數量與第二業務邏輯的類型數量相等,其中,第一層級的第二業務邏輯子類繼承所述第一業務邏輯類,下一層級的第二業務邏輯子類繼承上一層級的第二業務邏輯子類。
進一步的,所述步驟s4具體包括:
在每一種類型的第二業務邏輯子類中,復寫所述第一業務邏輯類中與該類型的第二業務子邏輯對應的抽象方法。
根據本發明的另一個方面,還提供了一種業務邏輯解耦裝置,包括:
第一定義模塊,用于為第一業務邏輯定義抽象類型的第一業務邏輯類;
第二定義模塊,用于在所述第一業務邏輯類中,定義與第二業務邏輯對應的抽象方法;
第三定義模塊,用于定義第二業務邏輯類,所述第二業務邏輯類繼承所述第一業務邏輯類;
復寫模塊,用于在所述第二業務邏輯類中復寫所述第一業務邏輯類中的抽象方法,通過第二業務邏輯類中的抽象方法實現第二業務邏輯。
進一步的,所述與第二業務邏輯對應的抽象方法有多個,所述第二定義模塊具體包括:
在所述第一業務邏輯類中需要實現第二業務邏輯的每一個位置,定義與第二業務邏輯對應的抽象方法,其中,每一個位置的抽象方法均不同。
進一步的,所述第二業務邏輯分為多個類型的第二業務子邏輯,每一個類型的第二業務子邏輯對應至少一個抽象方法,所有第二業務子邏輯對應的抽象方法構成第二業務邏輯的抽象方法;
所述第二定義模塊具體用于:
在所述第一業務邏輯類中,定義與所述第二業務邏輯對應的所有的抽象方法。
附圖說明
圖1為本發明一個實施例的業務邏輯解耦方法流程圖;
圖2為本發明另一個實施例的業務邏輯解耦裝置連接框圖;
圖3為本發明又一個實施例的業務邏輯解耦裝置的測試設備連接框圖。
具體實施方式
下面結合附圖和實施例,對本發明的具體實施方式作進一步詳細描述。以下實施例用于說明本發明,但不用來限制本發明的范圍。
參見圖1,圖1提供了本發明一個實施例的業務邏輯解耦方法,能夠將業務邏輯之間進行解耦,降低業務邏輯間的耦合性,業務邏輯間的實現互不干擾。業務邏輯解耦方法包括:s1,為第一業務邏輯定義抽象類型的第一業務邏輯類;s2,在第一業務邏輯類中,定義與第二業務邏輯對應的抽象方法;s3,定義第二業務邏輯類,所述第二業務邏輯類繼承所述第一業務邏輯類;s4,在所述第二業務邏輯類中復寫所述第一業務邏輯類中的抽象方法,通過第二業務邏輯類中的抽象方法實現第二業務邏輯。
在目前的業務邏輯實現中,通常的第一業務邏輯類是一個公開的pulic類型的實體類,若要在第一業務邏輯的基礎上實現第二業務邏輯,通常是在第一業務邏輯類中直接定義與第二業務邏輯對應的實現方法。這樣,若第二業務邏輯的實現方法比較多時,這些實現方法會嚴重地耦合到第一業務邏輯類中,當第二業務邏輯出現異常時,會引起第一業務邏輯的崩潰。
因此,本實施例將現有的pulic類型的第一業務邏輯類修改為抽象類型的第一業務邏輯類,這樣,第一業務邏輯就變成抽象的第一業務邏輯了。
抽象類最大的一個特性就是抽象類中可以有抽象的方法,也可以有非抽象的方法,抽象方法可以延遲到子類來進行復寫,在抽象類中可以直接使用子類所復寫過的抽象方法。
定義了抽象類型的第一業務邏輯類后,在第一業務邏輯類中,定義與第二業務邏輯對應的抽象方法。在抽象類中定義抽象方法需要在方法名前面加上abstract關鍵字來申明該方法是一個抽象方法。抽象類中的抽象方法可以只有方法申明而沒有方法實現,抽象類中的抽象方法可以延遲到子類進行實例化。在抽象類中定義抽象方法來實現抽象點的預埋。
然后再定義一個全新的第二業務邏輯類,為公開的pulic類型,其中,定義的第二業務邏輯類與抽象類型的第一業務邏輯類是繼承關系,即第二業務邏輯類繼承第一業務邏輯類。由于是繼承關系,第二業務邏輯類中就擁有第一業務邏輯類中的全部功能。隨后在第二業務邏輯類中通過復寫的方式來重寫前述在第一業務邏輯類中定義的抽象方法。復寫的方式是在抽象方法前添加override關鍵字來實現的。這樣就可以在第二業務邏輯類中實現第一業務邏輯類中定義的抽象方法對應的功能。
本實施例通過將第一業務邏輯類定義為抽象型,在其中定義抽象方法來預埋第二業務邏輯的功能,并單獨定義第二業務邏輯類來繼承第一業務邏輯類,在第二業務邏輯類中復寫第一業務邏輯類中定義的抽象方法,在第二業務邏輯類中實現第二業務邏輯的功能,實現了將第一業務邏輯與第二業務邏輯的分離,降低了兩者的耦合性,當第二業務邏輯在實現過程中出現了異常時,不會影響第一業務邏輯的實現;同時解耦后,能夠提高代碼的可維護性。
在本發明的一個實施例中,所述與第二業務邏輯對應的抽象方法有多個,所述步驟s2具體包括:在所述第一業務邏輯類中需要實現第二業務邏輯的每一個位置,定義與第二業務邏輯對應的抽象方法,其中,每一個位置的抽象方法均不同。
具體的,第二業務邏輯可能包括多個,比如,在開發的過程中,業務部門為了監控用戶的點擊事件,會要求開發者在第一業務邏輯中的特定位置植入打點等信息,一個位置需要植入一個打點信息,一個打點信息對應一個抽象方法。因此,在具體開發過程中,在第一業務邏輯類中需要實現第二業務邏輯的每一個位置,定義與第二業務邏輯對應的抽象方法,每一個位置處的抽象方法均不同。以第二業務邏輯為打點業務邏輯為例,在第一業務邏輯類中,在需要打點的每一個位置均定義一個抽象的打點方法。由于每一個位置處的打點方法是一個抽象的方法,抽象方法是一個沒有真實打點業務實現的方法,所以第一業務邏輯類并不具備真實的打點功能,只是預埋了所有需要打點的點位。在抽象的第一業務邏輯類中有多少個需要打點的點位,對應的就有多少個抽象的打點方法,這樣就在第一他業務邏輯類中實現了所有點位的預埋。
此后,在定義了第二業務邏輯類后,需要在第二業務邏輯類中復寫第一業務邏輯類中所有的抽象方法,通過在第二業務邏輯類中復寫的抽象方法去實現第一業務邏輯中的抽象打點的功能。
在第二業務邏輯類中實現對應的業務邏輯時,比如,在第二業務邏輯類中實現打點功能時,通過調用打點管理者pointmanger的reportdot方法來實現真實的打點業務邏輯。
在本發明的另一個實施例中,第二業務邏輯分為多個類型的第二業務子邏輯,每一個類型的第二業務子邏輯對應多個抽象方法,所有第二業務子邏輯的抽象方法構成第二業務邏輯的抽象方法。
其中,第二業務邏輯可能會有多種類型,每一個類型的第二業務邏輯稱為第二業務子邏輯,所有的第二業務子邏輯組成第二業務邏輯。每一個第二業務子邏輯對應有多個抽象方法,所有的第二業務子邏輯對應的所有的抽象方法構成第二業務邏輯的抽象方法。比如,前述的打點業務可以分為多種并行類型的打點子業務,每一個打點子業務對應多個抽象方法,所有的打點子業務對應的抽象方法構成打點業務的抽象方法。
在本發明的一個實施例中,多個類型的第二業務子邏輯為并行關系或者層級關系。當所述多個類型的第二業務子邏輯為并行關系時,所述步驟s2具體包括:在所述第一業務邏輯類中,定義與所述第二業務邏輯對應的所有的抽象方法。所述步驟s3具體包括:定義多個第二業務邏輯子類,所述第二業務邏輯子類的數量與第二業務邏輯的類型數量相等,其中,每一個第二業務邏輯子類均并行繼承所述第一業務邏輯類。所述步驟s4具體包括:在每一種類型的第二業務邏輯子類中,復寫所述第一業務邏輯類中與該類型的第二業務子邏輯對應的抽象方法。
若第二業務邏輯包括多種并列類型的第二業務子邏輯時,在第一業務邏輯中依然需要定義與第二業務邏輯對應的所有的抽象方法。然后,定義多個第二業務邏輯子類,第二業務邏輯子類的數量與第二業務邏輯的類型數量相等,且每一個第二業務邏輯子類均繼承第一業務邏輯類,可以理解為所有的第二業務邏輯子類并行繼承第一業務邏輯類。隨后,在每一個第二業務邏輯子類中復寫第一業務邏輯類中與第二業務邏輯對應的多個抽象方法,在每一個第二業務邏輯子類中實現相應的第二業務子邏輯。第一業務邏輯的實現和每一個第二業務子邏輯的實現互不干擾,多個第二業務邏輯子類的實現也互不干擾,真正實現了多者之間的解耦,耦合性低。
其中,除了上述的打點業務,第二業務邏輯還可以為其它的業務邏輯,比如,數據源提供業務邏輯。具體為,當用戶訪問不同的頁面時,服務器針對不同的頁面訪問,需要提供不同的數據源。那么本實施例可以定義一個抽象的第一業務邏輯類,在抽象的第一業務邏輯類中定義多個數據源提供的抽象方法,每一個數據源提供抽象方法能夠實現對應的頁面訪問所需的數據源。
然后定義多個不同的第二業務邏輯子類,每一個第二業務邏輯子類用來實現一種數據源的提供功能,這些第二業務邏輯子類的關系為并行關系。每一個第二業務邏輯子類均繼承第一業務邏輯類,在每一個第二業務邏輯子類中復寫第一業務邏輯類中提供相應的數據源的抽象方法。通過在不同的第二業務邏輯子類中實現不同的數據源的提供,不同數據源提供的實現過程中互不干擾,避免了因此一個數據源提供失敗,影響所有頁面訪問的實現。
在本發明的另一個實施例中,當多個類型的第二業務子邏輯具有層級關系時,所述步驟s2具體包括:在所述第一業務邏輯類中,定義與所述第二業務邏輯對應的所有的抽象方法。
所述步驟s3具體包括:定義多個第二業務邏輯子類,所述第二業務邏輯子類的數量與第二業務邏輯的類型數量相等,其中,第一層級的第二業務邏輯子類繼承所述第一業務邏輯類,下一層級的第二業務邏輯子類繼承上一層級的第二業務邏輯子類。所述步驟s4具體包括:在每一種類型的第二業務邏輯子類中,復寫所述第一業務邏輯類中與該類型的第二業務子邏輯對應的抽象方法。
上述實施例中的所有的第二業務子邏輯均為并行關系,本實施例中的第二業務子邏輯具有層級關系。同樣的,在第一業務邏輯類中定義與第二業務邏輯對應的所有的抽象方法。然后,定義多個第二業務邏輯子類,第二業務邏輯子類的數量與第二業務邏輯的類型數量相等。由于多個第二業務邏輯子類之間具有層級關系,因此,第一層級的第二業務邏輯子類繼承第一業務邏輯類,其它的為,下一層級的第二業務邏輯子類繼承上一層級的第二業務邏輯子類。且在每一個第二業務邏輯子類中復寫第一業務邏輯類中定義的與該類型的第二業務子邏輯對應的抽象方法,在每一個第二業務邏輯子類中實現相應的第二業務子邏輯。當下一層級的業務邏輯發生異常時,不會影響上一層級的業務邏輯的正常實現。
參加圖2,圖2提供了本發明另一個實施例的業務邏輯解耦裝置,包括第一定義模塊21、第二定義模塊22、第三定義模塊23和復寫模塊24。
第一定義模塊21,用于為第一業務邏輯定義抽象類型的第一業務邏輯類;
第二定義模塊22,用于在所述第一業務邏輯類中,定義與第二業務邏輯對應的抽象方法;
第三定義模塊23,用于定義第二業務邏輯類,所述第二業務邏輯類繼承所述第一業務邏輯類;
復寫模塊24,用于在所述第二業務邏輯類中復寫所述第一業務邏輯類中的抽象方法,通過第二業務邏輯類中的抽象方法實現第二業務邏輯。
其中,與第二業務邏輯對應的抽象方法有多個,所述第二定義模塊22具體用于:
在所述第一業務邏輯類中需要實現第二業務邏輯的每一個位置,定義與第二業務邏輯對應的抽象方法,其中,每一個位置的抽象方法均不同。
其中,所述第二業務邏輯分為多個類型的第二業務子邏輯,每一個類型的第二業務子邏輯對應多個抽象方法,所有第二業務子邏輯的抽象方法構成第二業務邏輯的抽象方法。
基于此,第二定義模塊22具體用于:
在所述第一業務邏輯類中,定義與所述第二業務邏輯對應的所有的抽象方法。
其中,所述多個類型的第二業務子邏輯為并行關系或者層級關系。
當所述多個類型的第二業務子邏輯為并行關系時,所述第三定義模塊23具體用于:
定義多個第二業務邏輯子類,所述第二業務邏輯子類的數量與第二業務邏輯的類型數量相等,其中,每一個第二業務邏輯子類均繼承所述第一業務邏輯類。
當所述多個類型的第二業務子邏輯為層級關系時,所述第三定義模塊23具體用于:
定義多個第二業務邏輯子類,所述第二業務邏輯子類的數量與第二業務邏輯的類型數量相等,其中,第一層級的第二業務邏輯子類繼承所述第一業務邏輯類,下一層級的第二業務邏輯子類繼承上一層級的第二業務邏輯子類。
所述復寫模塊24具體用于:
在每一種類型的第二業務邏輯子類中,復寫所述第一業務邏輯類中與該類型的第二業務子邏輯對應的抽象方法。
基于上述圖2對應實施例所提供的業務邏輯解耦裝置,本發明還提供了一種業務邏輯解耦裝置的測試設備。參見圖3,該業務邏輯解耦裝置的測試設備包括:處理器(processor)301、存儲器(memory)302、通信接口(communicationsinterface)303和總線304;
其中,處理器301、存儲器302及通信接口303分別通過總線304完成相互間的通信;
通信接口303用于該測試設備與業務邏輯解耦裝置的通信設備之間的信息傳輸;
處理器301用于調用存儲器302中的程序指令,以執行上述圖1對應實施例所提供的業務邏輯解耦方法,例如包括:為第一業務邏輯定義抽象類型的第一業務邏輯類;在所述第一業務邏輯類中,定義與第二業務邏輯對應的抽象方法;定義第二業務邏輯類,所述第二業務邏輯類繼承所述第一業務邏輯類;在所述第二業務邏輯類中復寫所述第一業務邏輯類中的抽象方法,通過第二業務邏輯類中的抽象方法實現第二業務邏輯。
本發明公開一種計算機程序產品,該計算機程序產品包括存儲在非暫態計算機可讀存儲介質上的計算機程序,該計算機程序包括程序指令,當程序指令被計算機執行時,計算機能夠執行上述圖1對應實施例所提供的業務邏輯解耦方法,例如包括:為第一業務邏輯定義抽象類型的第一業務邏輯類;在所述第一業務邏輯類中,定義與第二業務邏輯對應的抽象方法;定義第二業務邏輯類,所述第二業務邏輯類繼承所述第一業務邏輯類;在所述第二業務邏輯類中復寫所述第一業務邏輯類中的抽象方法,通過第二業務邏輯類中的抽象方法實現第二業務邏輯。
本發明提供一種非暫態計算機可讀存儲介質,該非暫態計算機可讀存儲介質存儲計算機指令,該計算機指令使計算機執行上述圖1對應實施例所提供的業務邏輯解耦方法,例如包括:為第一業務邏輯定義抽象類型的第一業務邏輯類;在所述第一業務邏輯類中,定義與第二業務邏輯對應的抽象方法;定義第二業務邏輯類,所述第二業務邏輯類繼承所述第一業務邏輯類;在所述第二業務邏輯類中復寫所述第一業務邏輯類中的抽象方法,通過第二業務邏輯類中的抽象方法實現第二業務邏輯。
本領域普通技術人員可以理解:實現上述方法實施例的全部或部分步驟可以通過程序指令相關的硬件來完成,前述的程序可以存儲于一計算機可讀取存儲介質中,該程序在執行時,執行包括上述方法實施例的步驟;而前述的存儲介質包括:rom、ram、磁碟或者光盤等各種可以存儲程序代碼的介質。
以上所描述的業務邏輯解耦裝置的測試設備等實施例僅僅是示意性的,其中作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部模塊來實現本實施例方案的目的。本領域普通技術人員在不付出創造性的勞動的情況下,即可以理解并實施。
通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到各實施方式可借助軟件加必需的通用硬件平臺的方式來實現,當然也可以通過硬件。基于這樣的理解,上述技術方案本質上或者說對現有技術做出貢獻的部分可以以軟件產品的形式體現出來,該計算機軟件產品可以存儲在計算機可讀存儲介質中,如rom/ram、磁碟、光盤等,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)執行各個實施例或者實施例的某些部分方法。
本發明提供的業務邏輯解耦方法及裝置,將第一業務邏輯定義為抽象類,并在抽象類中預埋與第二業務邏輯對應的抽象方法,并定義繼承第一業務邏輯類的第二業務邏輯類,通過繼承的方式使得第一業務邏輯與第二業務邏輯的實現分離,降低了兩者的耦合性,避免由于第二業務邏輯出現異常影響第一業務邏輯的正常運行,同時解耦后,能夠提高代碼的可維護性。
最后,本申請的方法僅為較佳的實施方案,并非用于限定本發明的保護范圍。凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護范圍之內。