欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

在ABAP里如何模擬實(shí)現(xiàn)JavaSpring的依賴注入-創(chuàng)新互聯(lián)

這篇文章將為大家詳細(xì)講解有關(guān)在ABAP里如何模擬實(shí)現(xiàn)Java Spring的依賴注入,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比廣州網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式廣州網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋廣州地區(qū)。費(fèi)用合理售后完善,10多年實(shí)體公司更值得信賴。

嘗試的場(chǎng)景

在現(xiàn)實(shí)生活中,每一盞燈都有一個(gè)開(kāi)關(guān)控制。按下開(kāi)關(guān),燈被打開(kāi);再按一次,燈熄滅。

先看不使用依賴注入的常規(guī)實(shí)現(xiàn):

設(shè)計(jì)一個(gè)ABAP interface ZIF_SWITCHABLE,提供兩個(gè)方法,分別對(duì)應(yīng)開(kāi)和關(guān)。

在ABAP里如何模擬實(shí)現(xiàn)Java Spring的依賴注入

自然的,我有一個(gè)ABAP 類 ZCL_LAMP,用于實(shí)現(xiàn)上述接口。每個(gè)ZCL_LAMP的實(shí)例就是一盞燈。

CLASS ZCL_LAMP IMPLEMENTATION.
method ZIF_SWITCHABLE~OFF.
WRITE: / 'lamp off'.
endmethod.
method ZIF_SWITCHABLE~ON.
WRITE: / 'lamp on'.
endmethod.
ENDCLASS.

再設(shè)計(jì)一個(gè)開(kāi)關(guān)類,這個(gè)類有一個(gè)成員變量mo_switchable, 指向ZIF_SWITCHABLE這個(gè)接口。

在ABAP里如何模擬實(shí)現(xiàn)Java Spring的依賴注入

開(kāi)關(guān)有個(gè)“按”的方法。按下之后,如果當(dāng)前狀態(tài)是開(kāi),那么就調(diào)用mo_switchable成員的off方法,將其關(guān)閉,并設(shè)置開(kāi)關(guān)狀態(tài)為關(guān)閉。反之亦然。

METHOD push.IF isswitchon = abap_true.
mo_switchable->off( ).
isswitchon = abap_false.ELSE.
mo_switchable->on( ).
isswitchon = abap_true.ENDIF.
ENDMETHOD.

提供一個(gè)setter方法,將傳入的類型為ZIF_SWITCHABLE的變量注入到成員變量mo_switchable中。

method SET_SWITCHABLE.
mo_switchable = io_switchable.
endmethod.

我把迄今為止創(chuàng)建的兩個(gè)類:ZCL_LAMP和ZCL_SWITCH都放到package $ZDEV_INVERSION內(nèi)。

在ABAP里如何模擬實(shí)現(xiàn)Java Spring的依賴注入

ABAP Summer框架的消費(fèi)代碼

從下圖的代碼能看出,ZCL_SWITCH和ZCL_LAMP產(chǎn)生了強(qiáng)依賴關(guān)系。這種依賴關(guān)系是應(yīng)用開(kāi)發(fā)人員調(diào)用set方法手動(dòng)注入的。

在ABAP里如何模擬實(shí)現(xiàn)Java Spring的依賴注入

總結(jié)一下,上圖代碼有哪些是在Java Spring里完全能夠通過(guò)依賴注入的思想來(lái)避免的。

line 8: 手工創(chuàng)建ZCL_LAMP(燈)的實(shí)例。

line 9: 手工創(chuàng)建ZCL_SWITCH(開(kāi)關(guān))的實(shí)例。

line 11: 調(diào)用set方法手動(dòng)注入燈和開(kāi)關(guān)的依賴關(guān)系。

使用ABAP Summer框架實(shí)現(xiàn)依賴注入

我自己用ABAP模擬了Java Spring的依賴注入框架,開(kāi)發(fā)了一個(gè)原型,取名ABAP Summer,與Java的Spring相呼應(yīng)。

先想想這個(gè)簡(jiǎn)單的例子用Java Spring如何實(shí)現(xiàn)。一個(gè)Java程序員很容易就能寫出下面的代碼,利用Spring的注解@Inject,我們無(wú)需手動(dòng)實(shí)例化ISwitchable和調(diào)用set方法建立依賴。一切由Spring框架幫我們實(shí)現(xiàn)了。

在ABAP里如何模擬實(shí)現(xiàn)Java Spring的依賴注入

現(xiàn)在,怎樣用ABAP實(shí)現(xiàn)這些“魔術(shù)”?

1. 在ZCL_SWITCH類的成員變量mo_switchable的描述字段里加上注解@Inject,意圖是告訴ABAP Summer框架,我希望mo_switchable成員能夠自動(dòng)被注入一個(gè)正確的依賴進(jìn)來(lái)。到底什么樣的依賴算正確?Summer框架如何知道該怎樣注入?請(qǐng)繼續(xù)閱讀。

在ABAP里如何模擬實(shí)現(xiàn)Java Spring的依賴注入

注意:ABAP這門語(yǔ)言同Java不同,無(wú)法在語(yǔ)言層面支持注解,因此這里在Description字段上維護(hù)的@Inject只是一個(gè)模擬。

2. 先看采用了依賴注入之后的ABAP消費(fèi)代碼,是不是一下子清爽了很多?

data(summer) = zcl_summer=>get_instance( ).
data(lo_switch) = cast zcl_switch( summer->get_bean( EXPORTING iv_bean_name = 'ZCL_SWITCH' ) ).
lo_switch->push( ).
lo_switch->push( ).

下圖是基于ABAP常規(guī)實(shí)現(xiàn)和基于ABAP依賴注入思想的兩套消費(fèi)代碼的比較,能清晰發(fā)現(xiàn),采取了ABAP依賴注入后,

在ABAP里如何模擬實(shí)現(xiàn)Java Spring的依賴注入

之前提到的這三處手動(dòng)操作完全得到避免。GET_BEAN方法返回的開(kāi)關(guān)實(shí)例,里面的成員變量mo_switchable包含的就是自動(dòng)注入好的ZCL_LAMP類的實(shí)例。

line 8: 手工創(chuàng)建ZCL_LAMP(燈)的實(shí)例。

line 9: 手工創(chuàng)建ZCL_SWITCH(開(kāi)關(guān))的實(shí)例。

line 11: 調(diào)用set方法手動(dòng)注入燈和開(kāi)關(guān)的依賴關(guān)系。

讓我們?cè)倏纯碕ava Spring里正宗的消費(fèi)代碼,確保我們發(fā)明的ABAP Summer確實(shí)是原汁原味的依賴注入。

在ABAP里如何模擬實(shí)現(xiàn)Java Spring的依賴注入

ABAP Summer依賴注入的實(shí)現(xiàn)原理

這個(gè)ABAP依賴注入框架的實(shí)現(xiàn)在我的github上:

https://github.com/i042416/jerryslide/tree/master/ABAP/summer

在ABAP里如何模擬實(shí)現(xiàn)Java Spring的依賴注入

關(guān)于“在ABAP里如何模擬實(shí)現(xiàn)Java Spring的依賴注入”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

當(dāng)前標(biāo)題:在ABAP里如何模擬實(shí)現(xiàn)JavaSpring的依賴注入-創(chuàng)新互聯(lián)
文章來(lái)源:http://aaarwkj.com/article48/coidep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、App開(kāi)發(fā)、搜索引擎優(yōu)化營(yíng)銷型網(wǎng)站建設(shè)、用戶體驗(yàn)域名注冊(cè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)
加勒比东京热视频在线| 欧美欧成人一区二区三区a∨| 亚洲国产熟女导航网站视频| 97国产精品亚洲精品| 国产在线一区二区三区蜜桃| 日韩视频精品一区二区| 无遮挡无掩盖的免费网站| 日韩在线不卡视频一区 | 91出品国产福利在线| 亚洲国产成人不卡高清麻豆| 亚洲欧美中文字幕乱码| 亚洲综合欧美日韩一区| 中文字幕av日韩在线| 成人性生交免大片免费| 日韩免费av在线观看| 亚洲欧洲日本一区精品| 国产精品九九久久精品三级| 四虎免费在线高清观看| 日本在线观看精品综合| 欧美日韩一区二区三区666| 亚洲日本精品免费在线观看| 国产精品蜜臀av在线一区| 天堂av一区二区在线播放| 一区二区三区日韩欧美在线| 成人午夜激情四射av| 手机在线观看av网站| 欧美国产激情一区二区| 欧美一级午夜欧美午夜视频| 日韩精品一区二区三区高清| 免费搜索国产男女视频| 日本人妻精品一区二区| 国产一区二区欧美精品| 日韩 在线一区二区| 久久人婷婷人人澡人人爽| 国产三级三级三级精品8ⅰ区| 精品久久人妻中文字幕免费| 亚洲人妻激情一区二区| 蜜臀av中文字幕亚洲| 男人天堂av网在线观看| 看看美女阴逼毛茸茸的| 一区二区三区特黄色片|