您好,登錄后才能下訂單哦!
從編程到設計.學習案例(1)
PHP與Spring之間的強勢接口設計
by 高煥堂(2015.10.1)
前言:
這是高煥堂TClub微信講座(2015/9/29)的內容,與大家分享,歡迎免費加入TClub。詳細請參考:http://www.cnblogs.com/SmartADT/。
大家都知道,要學好軟件(或架構)設計,不是從業務或需求開始,而是從接口(Interface)設計出發,才是迅速成為有效(架構)設計師的鳥語花香之路。因為業務(或需求分析)的焦點在于流程(Business flow),而軟件(架構)設計的天賦職責就在于結構(Structure),這結構是用來支撐互聯網時代下的千變萬化企業流程,而未來企業環境、需求與流程的<變化>是不可知的,所以才需要(架構)設計。
因此,知道結構與流程是分別來自不同而互補的兩個面向(Dimension),軟件(架構)設計師必須基于兩個不同視角(View)來設計架構和規劃流程。因此,軟件(架構)設計不是從業務(或需求)流程開始,而是從接口設計出發的,而接口不是從業務(領域)或需求抽象出來的。許多初學軟件設計者常常迷失于其中,沒關系的,我(高老師)陪您越過這個原野,馳聘于廣闊無垠的軟件世界。您可聽聽高老師怎么說=> 下載高老師視頻(免費)
一、目標
設計通用性(又稱通用型)接口(Interface),讓我們自己能掌握系統架構里的接口制定權,擁有話語權,所以是一種強勢型接口。
基于自己的接口,整合IWebShop、Spring和DBMS等外來平臺框架,讓這些外來的平臺框架都成為可被我們抽換的架構性插件(Plugin)。
自己制定的(通用性)接口,成為各服務器之間的必經渠道,我們可以設計抽象(父類)來實現這項接口,來監控交易(Transaction)流動和流量,例如我們可以設計一個”看門狗(watch dog)”的類。
隨著業務和系統的成長,將會增添更多上述的具象類(如watch dog類),逐漸形成我們自己的平臺框架(Framework)了。
基于自己制定的接口和框架,才能讓外來平臺框架成為可抽換,可新陳代謝的模塊,以避免我們的成長受制于外來平臺的接口和功能,確保我們能彈性成長,支撐成千上百萬的業務應用功能,并穩定、永續茁壯。
二、從外來平臺出發
首先拿基于PHP的iWebShop和Spring兩個外來的平臺框架為例。
我們來將兩者分離。
讓兩者便成為Loosely-Coupled。
這項目目標實現途徑就是:設計自己的<通用型接口>;又稱為<通用性接口>。
三、<通用型接口>的角色
從業務應用(App)開發的視角來看,我們會在iWebShop框架里撰寫特殊性業務邏輯,成為iWS App軟件,并調用Sring框架里的共享性企業邏輯(Business logic, or Business object),以及DB Server里的數據。
最典型的調用流程是:
運用proxy-stub設計模式(Design pattern),讓這iWS App可以掌握跨界的通信接口。
這個iWS App就包含兩部分,例如:iwsActivity(扮演proxy角色)和iwsService(扮演stub角色)。其分別置于分界線的兩邊。
最典型的調用流程是:
設計我們自己的通用性接口:
其典型的調用流程是:
四、<通用性接口>的設計要點:應用<工廠設計模式(Factory Pattern)
設計一個absFactory父類。
設計一個BridgeLib模塊。
其典型的調用流程,分為兩的步驟:1)獲取Service;2)透過通用性接口來調用Service。
五、<通用性接口>的調用步驟(1):獲取Service
步驟<1a>:透過BridgeLib模塊調用Factory,來創建iwsFactory對象,然后回傳(return)此對象的通用性接口。
(步驟<1a>)
步驟<1b>:BridgeLib模塊調用myFactory,來創建iwsService對象,然后回傳(return)此對象的通用性接口。
(步驟<1b>)
六、<通用性接口>的調用步驟(2):透過通用性接口來調用Service
在上一小節的步驟<1b>里,BridgeLib將iwsService的通用性接口回傳給iwsActivity。
于是,在這步驟<2>里,iwsActivity就透過通用性接口調用到iwsService和Spring框架了。
(步驟<2>)
七、<通用性接口>的優越特性
通用性接口是我們自己設計和掌握的,讓iWebShop與Spring變成松偶合(loosely-coupled)。
因此,iWebShop/iwsActivity除了Spring之外,還可以搭配其它后臺框架,例如GAE云平臺等。
只要我們的通用性接口維持不變,iWebShop/iwsActivity等前端的全部代碼都可以不受影響。不但可以節省改版成本、快速改版之外、系統升級過程中的穩定度,還具備銜接到各式各樣云平臺的無限擴充能力。
PS. 這是高煥堂TClub微信講座(2015/9/29)的內容,與大家分享,歡迎免費加入TClub。詳細請參考:http://www.cnblogs.com/SmartADT/。
~ End ~
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。