• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于策略模式的存儲過程使用研究

      2017-12-29 04:25:15
      四川職業(yè)技術學院學報 2017年5期
      關鍵詞:調(diào)用對象模塊

      許 俊

      (四川職業(yè)技術學院計算機科學系,四川 遂寧 629000)

      基于策略模式的存儲過程使用研究

      許 俊

      (四川職業(yè)技術學院計算機科學系,四川 遂寧 629000)

      應用策略模式來研究返回數(shù)據(jù)結(jié)果集的存儲過程在前端高層模塊的使用.在策略模式設計思維下,每個存儲過程調(diào)用視為一種策略,每一種策略即是一個類,去實現(xiàn)它上層對策略家族的抽象.本文按有參和無參兩類存儲過程作詳細分析,設計類圖,并實現(xiàn).所研究的使用模式,進一步提高了系統(tǒng)的復用性、可維護性.

      策略模式;數(shù)據(jù)庫;存儲過程

      1 策略模式

      策略模式是定義了算法家族,封裝每一個算法,每一個算法能夠互相替換.算法家族的各個算法完成相同的操作,只不過實現(xiàn)的方式不同而已.調(diào)用它們的方式是同樣的,這樣就減少了各個算法類與調(diào)用算法的類的耦合.

      策略模式的適用性是下面的范圍:多個關聯(lián)的類只是它們的操作有一些差異;稍有變異的實體使用一個算法;需要對調(diào)用者隱藏算法和數(shù)據(jù)結(jié)構(gòu).策略模式的一般類圖如圖1:

      圖1 策略模式的一般類圖

      Stategy:指策略,定義全體公共的接口,Context通過些接口調(diào)用 ConcreteStrategyA、ConcreteStrategyB、ConcreteStrategyC 等定義的算法.

      ConcreteStrategy:具體策略,以Strategy實現(xiàn)某個具體的算法.

      Context:策略相關文本.引用Strategy對象,用一個具體的策略 ConcreteStrategyA、ConcreteStrategyB、ConcreteStrategyC 等對象作配置.

      2 存儲過程的一般使用方式

      在前端應用開發(fā)中,簡單分層結(jié)構(gòu)設計常常把存儲過程調(diào)用封裝到一個數(shù)據(jù)訪問類,用戶層通過調(diào)用這個類的方法去調(diào)用存儲過程,使界面層UI與數(shù)據(jù)訪問層DAO初步解耦.迪米特法則要求,一個對象應該最少地了解其它對象,一個類對其調(diào)用類的屬性、方法等應盡量少知道.因而這種應用方式的設計,有一個顯著的缺陷,那就是數(shù)據(jù)訪問層DAO會把所有的public方法暴露給客戶端UI,而不管客戶端的某個調(diào)用是否真正需要訪問那么多方法,會導致前端UI與數(shù)據(jù)層的耦合度升高.如果把對每個存儲過程的調(diào)用封裝為一個職責單一的類,這樣與前端耦合很低,但面對眾多的存儲過程時,這種過度的設計增加了系統(tǒng)開發(fā)維護的復雜性.

      3 基于策略模式的存儲過程使用設計

      3.1 設計思路

      本文另辟蹊徑,應用策略模式來研究存儲過程在前端高層模塊的使用.在策略模式設計思維下,每個存儲過程調(diào)用視為一種策略,每一種策略即是一個類,需要實現(xiàn)它上層的抽象,上層類是整個策略家族的抽象.

      本文以執(zhí)行查詢語句返回數(shù)據(jù)結(jié)果集的存儲過程為研究對象,把研究對象分為無參數(shù)和有參數(shù)的存儲過程,遵從接口隔離原則,策略抽象也分為兩類,一類是其抽象的方法中不帶參數(shù),是所有無參數(shù)調(diào)用存儲過程的抽象表達,另一類是其抽象的方法中帶參數(shù),是所有帶參數(shù)的存儲過程調(diào)用的抽象表達.每個具體的策略實現(xiàn)一個抽象策略中的方法,即對數(shù)據(jù)庫中的存儲過程進行調(diào)用.封裝策略的類也因此有帶參數(shù)的策略類和不帶參數(shù)的策略類,具體策略根據(jù)其實現(xiàn)的抽象類,被封裝到相應的策略封裝類中,屏蔽了高層模塊對低層策略算法的直接訪問.此時數(shù)據(jù)訪問類DAO成為抽象類的protected修飾的內(nèi)部屬性,只提供給其子類訪問,也不與高層模塊耦合了.

      3.2 類圖

      現(xiàn)有三個存儲過程,up_teacher不帶參數(shù)查詢老師信息,up_studentByClass按班級查詢學生信息,班名是參數(shù),up_reportByCourse以課程名為參數(shù),查詢指定的一門課程成績,由此識別出三個類:老師類Teacher、學生類Student、成績報表類Report.畫出類圖如圖2:

      圖2 存儲過程的相關類圖

      StrategyWithoutPara是無參數(shù)策略的抽象類,其中包含抽象DAO屬性和不帶參數(shù)返回數(shù)據(jù)集的方法getDataSet(),Teacher類繼承此抽象類,覆寫它的getDataSet方法,間接調(diào)用了DAO中的up_teacher存儲過程.

      StrategyWithtPara是有參數(shù)策略的抽象,其中也包含DAO屬性和帶參數(shù)返回數(shù)據(jù)集的方法getDataSet(ArrayListParaList),Student類繼承此抽象類,覆寫它的getDataSet(ArrayListParaL-ist)方法,間接調(diào)用了DAO中的up_studentBy-Class存儲過程.

      ContextWithoutPara類封裝所有方法中不帶參數(shù)的具體策略,即具體算法或行為getDataSet(),維護對一個StrategyWithoutPara對象的引用.

      ContextWithPara類封裝所有方法中帶參數(shù)的具體策略,具體算法或行為getDataSet(ArrayList ParaList),維護對一個StrategyWithPara對象的引用.

      DAO類封裝了對后臺數(shù)據(jù)庫連接管理、數(shù)據(jù)訪問、存儲過程調(diào)用,作為抽象類StrategyWithtPara和StrategyWithtoutPara的屬性對象,提供方法供抽象類調(diào)用.

      Client場景類模擬高層模塊,聲明具體的策略和對具體策略的封裝類ContextWithout、ParaStrategyWithtPara,執(zhí)行封裝后的方法getDataSet、getDataSet(ArrayListParaList).

      如果系統(tǒng)功能需要擴展,如查詢某門課程成績,只需添加Report子類,并繼承Strategy WithtPara類,在覆寫帶參數(shù)的方法getDataSet(ArrayListParaList)里,調(diào)用up_reportByCourse即可,高層模塊通過Report類產(chǎn)生新的類,實現(xiàn)業(yè)務的變化對系統(tǒng)的最小化影響,不用修改其它類,只作橫向擴展,也符合“對擴展開放,對修改關閉”的開閉原則,提高了系統(tǒng)的復用性、可維護性.

      4 基于策略模式的存儲過程使用實現(xiàn)

      高層模塊的調(diào)用極其簡略,代碼調(diào)用也很簡潔,當需要使用哪一個具體的策略時,實例出它對應的對象,放入封裝類里,再執(zhí)行它的封裝方法,過程也十分明了。采用繼承和多態(tài)的對象機制,策略模式使得系統(tǒng)以增加新類實現(xiàn)其抽象接口的方式方便地擴展了系統(tǒng)。

      [1]AlanShalloway.設計模式解析[M].徐言聲,譯.北京:人民郵電出版社,2016.

      [2]程杰.大話設計模式[M].北京:清華大學出版社,2007.

      [3]秦小波.設計模式之禪[M].北京:機械工業(yè)出版社,2011.

      [4]許俊.對非1NF關系查詢的探討[J].四川職業(yè)技術學院學報,2013,(5).

      [5]許俊.對Oracle多表關聯(lián)更新的應用研究[J].四川職業(yè)技術學院學報,2015,(2).

      On the Usage of Stored Procedure Based on Strategy Pattern

      XU Jun
      (Computer Science Department, Sichuan Vocational and Technical College, Suining Sichuan,629000)

      The paper applies the strategy pattern to study the use of the stored procedure of the return data result set at the front end of the high-level module. Under the design of strategy pattern,each stored procedure call is treated as a strategy,and each strategy is a class,to achieve the abstraction of the upper to the strategy family.With a detailed analysis of the two types of storage processes (with and without parameters),we design the class diagram and realize the use of the pettern to further improve the system’s reusability and maintainability.

      Strategy Patttern;Database;Stored Procedure

      張隆輝

      TP311.1

      A

      1672-2094(2017)05-0147-04

      2017-05-26

      四川省教育廳重點科研項目“基于NoSQL大數(shù)據(jù)技術的信息搜索方案研究”(編號:15ZA0348)、“網(wǎng)絡大數(shù)據(jù)測試基準研究”(編號:15ZA0349)成果之一.

      許 俊(1969-),男,四川蓬溪人,四川職業(yè)技術學院副教授,碩士.研究方向:軟件工程,數(shù)據(jù)庫技術.

      猜你喜歡
      調(diào)用對象模塊
      神秘來電
      睿士(2023年2期)2023-03-02 02:01:09
      28通道收發(fā)處理模塊設計
      “選修3—3”模塊的復習備考
      核電項目物項調(diào)用管理的應用研究
      LabWindows/CVI下基于ActiveX技術的Excel調(diào)用
      測控技術(2018年5期)2018-12-09 09:04:46
      攻略對象的心思好難猜
      意林(2018年3期)2018-03-02 15:17:24
      基于系統(tǒng)調(diào)用的惡意軟件檢測技術研究
      基于熵的快速掃描法的FNEA初始對象的生成方法
      區(qū)間對象族的可鎮(zhèn)定性分析
      選修6 第三模塊 International Relationships
      皮山县| 黔江区| 恩施市| 宁陕县| 尤溪县| 迁西县| 四子王旗| 大新县| 寿光市| 宣威市| 江阴市| 惠州市| 天津市| 海盐县| 海丰县| 罗城| 平陆县| 平潭县| 新干县| 东港市| 远安县| 普格县| 余庆县| 崇信县| 谢通门县| 泽州县| 庆安县| 乌拉特中旗| 咸宁市| 洪湖市| 上虞市| 土默特左旗| 诏安县| 营口市| 射洪县| 三门峡市| 金门县| 连平县| 滁州市| 聂拉木县| 平泉县|