溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

PHP與Spring之間的強(qiáng)勢(shì)接口設(shè)計(jì):學(xué)習(xí)案例

發(fā)布時(shí)間:2020-07-23 13:48:11 來源:網(wǎng)絡(luò) 閱讀:639 作者:myeit 欄目:web開發(fā)

高煥堂TCLUB微信講座(2015/9/29)內(nèi)容分享

從編程到設(shè)計(jì).學(xué)習(xí)案例(1)

PHPSpring之間的強(qiáng)勢(shì)接口設(shè)計(jì)

 

by 高煥堂(2015.10.1)


前言:

  這是高煥堂TClub微信講座(2015/9/29)的內(nèi)容,大家分享,歡迎免費(fèi)加入TClub。詳細(xì)請(qǐng)參考:http://www.cnblogs.com/SmartADT/。

      大家都知道,要學(xué)好軟件(或架構(gòu))設(shè)計(jì),不是從業(yè)務(wù)或需求開始,而是從接口(Interface)設(shè)計(jì)出發(fā),才是迅速成為有效(架構(gòu))設(shè)計(jì)師的鳥語花香之路。因?yàn)闃I(yè)務(wù)(或需求分析)的焦點(diǎn)在于流程(Business flow),而軟件(架構(gòu))設(shè)計(jì)的天賦職責(zé)就在于結(jié)構(gòu)(Structure),這結(jié)構(gòu)是用來支撐互聯(lián)網(wǎng)時(shí)代下的千變?nèi)f化企業(yè)流程,而未來企業(yè)環(huán)境、需求與流程的<變化>是不可知的,所以才需要(架構(gòu))設(shè)計(jì)。

      因此,知道結(jié)構(gòu)與流程是分別來自不同而互補(bǔ)的兩個(gè)面向(Dimension),軟件(架構(gòu))設(shè)計(jì)師必須基于兩個(gè)不同視角(View)來設(shè)計(jì)架構(gòu)和規(guī)劃流程。因此,軟件(架構(gòu))設(shè)計(jì)不是從業(yè)務(wù)(或需求)流程開始,而是從接口設(shè)計(jì)出發(fā)的,而接口不是從業(yè)務(wù)(領(lǐng)域)或需求抽象出來的。許多初學(xué)軟件設(shè)計(jì)者常常迷失于其中,沒關(guān)系的,我(高老師)陪您越過這個(gè)原野,馳聘于廣闊無垠的軟件世界。您可聽聽高老師怎么說=> 下載高老師視頻(免費(fèi))

   

一、目標(biāo)

  • 設(shè)計(jì)通用性(又稱通用型)接口(Interface),讓我們自己能掌握系統(tǒng)架構(gòu)里的接口制定權(quán),擁有話語權(quán),所以是一種強(qiáng)勢(shì)型接口。

  • 基于自己的接口,整合IWebShop、Spring和DBMS等外來平臺(tái)框架,讓這些外來的平臺(tái)框架都成為可被我們抽換的架構(gòu)性插件(Plugin)。

  • 自己制定的(通用性)接口,成為各服務(wù)器之間的必經(jīng)渠道,我們可以設(shè)計(jì)抽象(父類)來實(shí)現(xiàn)這項(xiàng)接口,來監(jiān)控交易(Transaction)流動(dòng)和流量,例如我們可以設(shè)計(jì)一個(gè)”看門狗(watch dog)”的類。

  • 隨著業(yè)務(wù)和系統(tǒng)的成長(zhǎng),將會(huì)增添更多上述的具象類(如watch dog類),逐漸形成我們自己的平臺(tái)框架(Framework)了。

  • 基于自己制定的接口和框架,才能讓外來平臺(tái)框架成為可抽換,可新陳代謝的模塊,以避免我們的成長(zhǎng)受制于外來平臺(tái)的接口和功能,確保我們能彈性成長(zhǎng),支撐成千上百萬的業(yè)務(wù)應(yīng)用功能,并穩(wěn)定、永續(xù)茁壯。

 

二、從外來平臺(tái)出發(fā)

  • 首先拿基于PHP的iWebShop和Spring兩個(gè)外來的平臺(tái)框架為例。

    PHP與Spring之間的強(qiáng)勢(shì)接口設(shè)計(jì):學(xué)習(xí)案例

  • 我們來將兩者分離。

    PHP與Spring之間的強(qiáng)勢(shì)接口設(shè)計(jì):學(xué)習(xí)案例

  • 讓兩者便成為L(zhǎng)oosely-Coupled。

    PHP與Spring之間的強(qiáng)勢(shì)接口設(shè)計(jì):學(xué)習(xí)案例

  • 這項(xiàng)目目標(biāo)實(shí)現(xiàn)途徑就是:設(shè)計(jì)自己的<通用型接口>;又稱為<通用性接口>。

    PHP與Spring之間的強(qiáng)勢(shì)接口設(shè)計(jì):學(xué)習(xí)案例

 

三、<通用型接口>的角色

  • 從業(yè)務(wù)應(yīng)用(App)開發(fā)的視角來看,我們會(huì)在iWebShop框架里撰寫特殊性業(yè)務(wù)邏輯,成為iWS App軟件,并調(diào)用Sring框架里的共享性企業(yè)邏輯(Business logic, or Business object),以及DB Server里的數(shù)據(jù)。

     PHP與Spring之間的強(qiáng)勢(shì)接口設(shè)計(jì):學(xué)習(xí)案例 

  • 最典型的調(diào)用流程是:

     PHP與Spring之間的強(qiáng)勢(shì)接口設(shè)計(jì):學(xué)習(xí)案例 

  • 運(yùn)用proxy-stub設(shè)計(jì)模式(Design pattern),讓這iWS App可以掌握跨界的通信接口。

        PHP與Spring之間的強(qiáng)勢(shì)接口設(shè)計(jì):學(xué)習(xí)案例

 

  • 這個(gè)iWS App就包含兩部分,例如:iwsActivity(扮演proxy角色)和iwsService(扮演stub角色)。其分別置于分界線的兩邊。

     PHP與Spring之間的強(qiáng)勢(shì)接口設(shè)計(jì):學(xué)習(xí)案例    

  • 最典型的調(diào)用流程是:

     PHP與Spring之間的強(qiáng)勢(shì)接口設(shè)計(jì):學(xué)習(xí)案例

  • 設(shè)計(jì)我們自己的通用性接口:

     PHP與Spring之間的強(qiáng)勢(shì)接口設(shè)計(jì):學(xué)習(xí)案例  

  • 其典型的調(diào)用流程是:

     PHP與Spring之間的強(qiáng)勢(shì)接口設(shè)計(jì):學(xué)習(xí)案例

 

四、<通用性接口>的設(shè)計(jì)要點(diǎn):應(yīng)用<工廠設(shè)計(jì)模式(Factory Pattern)

  • 設(shè)計(jì)一個(gè)absFactory父類。

     PHP與Spring之間的強(qiáng)勢(shì)接口設(shè)計(jì):學(xué)習(xí)案例

  • 設(shè)計(jì)一個(gè)BridgeLib模塊。

        PHP與Spring之間的強(qiáng)勢(shì)接口設(shè)計(jì):學(xué)習(xí)案例 

  • 其典型的調(diào)用流程,分為兩的步驟:1)獲取Service;2)透過通用性接口來調(diào)用Service。

 

五、<通用性接口>的調(diào)用步驟(1):獲取Service

  • 步驟<1a>:透過BridgeLib模塊調(diào)用Factory,來創(chuàng)建iwsFactory對(duì)象,然后回傳(return)此對(duì)象的通用性接口。

     PHP與Spring之間的強(qiáng)勢(shì)接口設(shè)計(jì):學(xué)習(xí)案例(步驟<1a>)

  • 步驟<1b>:BridgeLib模塊調(diào)用myFactory,來創(chuàng)建iwsService對(duì)象,然后回傳(return)此對(duì)象的通用性接口。

     PHP與Spring之間的強(qiáng)勢(shì)接口設(shè)計(jì):學(xué)習(xí)案例(步驟<1b>)

六、<通用性接口>的調(diào)用步驟(2)透過通用性接口來調(diào)用Service

  • 在上一小節(jié)的步驟<1b>里,BridgeLib將iwsService的通用性接口回傳給iwsActivity。

  • 于是,在這步驟<2>里,iwsActivity就透過通用性接口調(diào)用到iwsService和Spring框架了。

     PHP與Spring之間的強(qiáng)勢(shì)接口設(shè)計(jì):學(xué)習(xí)案例(步驟<2>)

七、<通用性接口>的優(yōu)越特性

  • 通用性接口是我們自己設(shè)計(jì)和掌握的,讓iWebShop與Spring變成松偶合(loosely-coupled)。

  • 因此,iWebShop/iwsActivity除了Spring之外,還可以搭配其它后臺(tái)框架,例如GAE云平臺(tái)等。

  • 只要我們的通用性接口維持不變,iWebShop/iwsActivity等前端的全部代碼都可以不受影響。不但可以節(jié)省改版成本、快速改版之外、系統(tǒng)升級(jí)過程中的穩(wěn)定度,還具備銜接到各式各樣云平臺(tái)的無限擴(kuò)充能力。

 

PS. 這是高煥堂TClub微信講座(2015/9/29)的內(nèi)容,大家分享,歡迎免費(fèi)加入TClub。詳細(xì)請(qǐng)參考:http://www.cnblogs.com/SmartADT/。


~ End ~


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI