日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
創(chuàng)新互聯(lián)GoFrame教程:GoFrame框架設(shè)計(jì)-接口化與泛型設(shè)計(jì)

一、基本介紹

接口化是更高層次的抽象??蚣芙M件的設(shè)計(jì)盡可能使用了接口化,而不是盡可能提供具體實(shí)現(xiàn)。接口化設(shè)計(jì)的最大的好處,是允許使用者自定義實(shí)現(xiàn),來(lái)替換組件底層的接口層,以實(shí)現(xiàn)很強(qiáng)的靈活性和擴(kuò)展性。

二、組件接口化

?GOFrame?框架的核心組件均采用了接口化設(shè)計(jì),舉個(gè)例子,如下圖展示了部分組件的接口化實(shí)現(xiàn)概覽:

大部分的組件,使用了?Adapter?作為自身接口層的名字,通過(guò)?SetAdapter?方法來(lái)設(shè)置當(dāng)前的接口實(shí)現(xiàn),通過(guò)?GetAdapter?方法獲取當(dāng)前組件的接口實(shí)現(xiàn)對(duì)象。此外,為了提高易用性,組件都會(huì)提供一些默認(rèn)的?Adapter?實(shí)現(xiàn),可供使用者選擇。拿?gsession?組件舉例:

底層接口采用了?Storage?進(jìn)行定義,并提供了?File/Memory/Redis/RedisHashTable?四種實(shí)現(xiàn)供選擇,默認(rèn)實(shí)現(xiàn)為?File?。

三、接口化與泛型

組件的接口化設(shè)計(jì)可擴(kuò)展性是很高的,但是在具體落地的時(shí)候需要結(jié)合泛型來(lái)實(shí)現(xiàn)更靈活的使用。同樣拿?gsession?組件舉例,參數(shù)的返回均采用了泛型,在業(yè)務(wù)使用時(shí)根據(jù)需要再轉(zhuǎn)換為對(duì)應(yīng)的數(shù)據(jù)類型。

提高參數(shù)靈活性、簡(jiǎn)化使用復(fù)雜度

在不使用泛型的情況下,我們的接口要么提供各種類型的方法、要么使用interface{}類型返回,使用的復(fù)雜度都比較高。統(tǒng)一通過(guò)泛型的數(shù)據(jù)類型返回,使得參數(shù)類型更加靈活,極大地降低了使用復(fù)雜度。

泛型支持轉(zhuǎn)換為各種類型:

根據(jù)業(yè)務(wù)場(chǎng)景需要轉(zhuǎn)換為對(duì)應(yīng)的數(shù)據(jù)類型。類型轉(zhuǎn)換使用了框架統(tǒng)一的類型轉(zhuǎn)換組件,底層會(huì)優(yōu)先使用斷言進(jìn)行類型識(shí)別,以保證轉(zhuǎn)換的效率。

統(tǒng)一使用方式、屏蔽底層影響

針對(duì)于一些復(fù)雜類型的接口化場(chǎng)景,接口的底層實(shí)現(xiàn)上可能會(huì)存在外部存儲(chǔ)的情況、更會(huì)產(chǎn)生序列化/反序列化操作,可能會(huì)改變/丟失數(shù)據(jù)類型。使用泛型將能夠通過(guò)統(tǒng)一的使用方式屏蔽底層實(shí)現(xiàn)的影響。例如以下示例,無(wú)論底層?Session?實(shí)現(xiàn)如何變化,上層使用均通過(guò)泛型的?Scan?方法轉(zhuǎn)換為目標(biāo)對(duì)象。

四、注意事項(xiàng)

雖然框架提供了泛型設(shè)計(jì),但是并不推薦在業(yè)務(wù)中廣泛使用泛型。業(yè)務(wù)層的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì),包括接口和業(yè)務(wù)模型數(shù)據(jù)結(jié)構(gòu),應(yīng)當(dāng)是準(zhǔn)確的、確定的。


網(wǎng)站題目:創(chuàng)新互聯(lián)GoFrame教程:GoFrame框架設(shè)計(jì)-接口化與泛型設(shè)計(jì)
轉(zhuǎn)載源于:http://m.5511xx.com/article/coijpcs.html