明明是oo的背景,缺寫成了po的現實--------------------
工作過程中發現了一種俄派武學流派----無限套娃;
/**
* @author ; 俄羅斯套娃
* @description 複雜業務邏輯裡乙個方法套另乙個方法,被巢狀的方法在套下乙個方法,依此類推,巢狀n多層。
* 在方法開始處乙個事物管所有,然後業務邏輯裡面充斥著第三方遠端介面呼叫,大sql處理等耗時操作。
*/class matryoshkadoll_1
public object setup2(object obj)
public object setup3(object obj)
public object setup_1(object obj)
public object setup_(object obj)
// .........
}class servere_1
}
在原本的controller → service → dao層次中新增common層(或者biz,叫什麼無所謂),形成新的controller → common→service → dao呼叫結構。
在controller處理完引數校驗後,在common中處理業務邏輯,在service中組織db物件運算元據庫。
需要加分布式鎖和耗時的操作(mq,redis,第三方的遠端api介面等)在controller或common中處理。
呼叫順序只能自上向下呼叫,不允許自下向上呼叫,儘量減少同級呼叫。
所有的前置邏輯都是為了最後運算元據庫準備引數。單層巢狀層級淺,細節分支間互不影響,形成一套e型的呼叫鏈。
class common1
}class service_2
/*** 不執行sql-ddl語句
** @param obj
* @return
*/public object setup3(object obj)
/*** 不執行sql-ddl語句
** @param obj
* @return
*/public object setup_(object obj)
// .........
/*** 執行sql-ddl語句
** @param obj
* @return
*/@transactional(rollbackfor = exception.class, timeout = 30)
public object setup_1(object obj)
}class service_3
}
方法間依賴引數,而不是依賴流程,方法的復用率會有很大的提高。
整個流程中的事務範圍被盡可能的控制在了乙個很小的範圍。
複雜業務的處理流程變的清晰,隱藏了細節的實現,對於新人可以只關心某一處的**邏,完整的流程可以有乙個舒服的緩衝時間來慢慢熟悉。
ps:可能不是最好的實現方式,但很方便找自己寫的bug。
俄羅斯套娃信封
給一定數量的信封,帶有整數對 w,h 分別代表信封寬度和高度。乙個信封的寬高均大於另乙個信封時可以放下另乙個信封。求最大的信封巢狀層數。樣例 1 輸入 5,4 6,4 6,7 2,3 輸出 3 解釋 最大的信封巢狀層數是 3 2,3 5,4 6,7 樣例 2 輸入 4,5 4,6 6,7 2,3 1...
俄羅斯套娃問題
給定一些標記了寬度和高度的信封,寬度和高度以整數對形式 w,h 出現。當另乙個信封的寬度和高度都比這個信封大的時候,這個信封就可以放進另乙個信封裡,如同俄羅斯套娃一樣。請計算最多能有多少個信封能組成一組 俄羅斯套娃 信封 即可以把乙個信封放到另乙個信封裡面 說明 不允許旋轉信封。示例 輸入 enve...
俄羅斯套娃信封問題
給定一些標記了寬度和高度的信封,寬度和高度以整數對形式 w,h 出現。當另乙個信封的寬度和高度都比這個信封大的時候,這個信封就可以放進另乙個信封裡,如同俄羅斯套娃一樣。請計算最多能有多少個信封能組成一組 俄羅斯套娃 信封 即可以把乙個信封放到另乙個信封裡面 說明 不允許旋轉信封。示例 輸入 enve...