999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2017-12-29 04:25:15
關(guān)鍵詞:策略方法

許 俊

(四川職業(yè)技術(shù)學(xué)院計(jì)算機(jī)科學(xué)系,四川 遂寧 629000)

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

許 俊

(四川職業(yè)技術(shù)學(xué)院計(jì)算機(jī)科學(xué)系,四川 遂寧 629000)

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

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

1 策略模式

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

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

圖1 策略模式的一般類圖

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

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

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

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

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

3 基于策略模式的存儲過程使用設(shè)計(jì)

3.1 設(shè)計(jì)思路

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

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

3.2 類圖

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

圖2 存儲過程的相關(guān)類圖

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(),維護(hù)對一個StrategyWithoutPara對象的引用.

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

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

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

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

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

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

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

[2]程杰.大話設(shè)計(jì)模式[M].北京:清華大學(xué)出版社,2007.

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

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

[5]許俊.對Oracle多表關(guān)聯(lián)更新的應(yīng)用研究[J].四川職業(yè)技術(shù)學(xué)院學(xué)報,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

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

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

猜你喜歡
策略方法
基于“選—練—評”一體化的二輪復(fù)習(xí)策略
求初相φ的常見策略
例談未知角三角函數(shù)值的求解策略
我說你做講策略
學(xué)習(xí)方法
高中數(shù)學(xué)復(fù)習(xí)的具體策略
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
捕魚
主站蜘蛛池模板: 国产人免费人成免费视频| 国产一级在线观看www色 | 91精品国产一区自在线拍| 无码日韩人妻精品久久蜜桃| 日韩精品一区二区三区免费在线观看| 亚洲欧美一级一级a| 无码AV动漫| 91欧洲国产日韩在线人成| A级全黄试看30分钟小视频| 手机在线国产精品| 国产日本欧美亚洲精品视| 亚洲成人网在线播放| 91口爆吞精国产对白第三集| 亚洲中文字幕23页在线| 国产经典在线观看一区| 人妻出轨无码中文一区二区| 国产在线专区| 亚洲伦理一区二区| 91青草视频| 99人妻碰碰碰久久久久禁片| 18禁不卡免费网站| 久久精品人人做人人爽| 99热这里都是国产精品| 成人日韩视频| 久久先锋资源| 日日噜噜夜夜狠狠视频| 免费在线观看av| 国产精品太粉嫩高中在线观看| 国产情侣一区二区三区| 99久久99这里只有免费的精品| 91免费国产在线观看尤物| 欧美国产日韩在线播放| 视频二区亚洲精品| 免费观看欧美性一级| 五月天久久婷婷| 奇米精品一区二区三区在线观看| 九色在线观看视频| 亚洲综合第一区| 伊大人香蕉久久网欧美| 天天躁日日躁狠狠躁中文字幕| 亚洲日韩精品伊甸| 四虎国产精品永久一区| 久久9966精品国产免费| 一本久道久综合久久鬼色| 狠狠综合久久| 国产伦片中文免费观看| 91免费片| 国产精品女主播| 欧美成人午夜在线全部免费| 成人一区在线| 91精品国产一区| 国产精品永久在线| 黄色一级视频欧美| 亚洲无码精彩视频在线观看| 中文字幕一区二区人妻电影| 亚洲第一成年网| 久久不卡国产精品无码| 人妻一区二区三区无码精品一区 | 国产日韩精品一区在线不卡| 国产91高跟丝袜| av在线人妻熟妇| 国产男女免费视频| 自慰网址在线观看| 亚洲日韩图片专区第1页| 国产欧美精品午夜在线播放| 夜色爽爽影院18禁妓女影院| 国产黄色片在线看| 欧美翘臀一区二区三区| 在线看片免费人成视久网下载| 亚洲欧美成人| 欧美综合中文字幕久久| 国产欧美日韩视频怡春院| 国产精品欧美亚洲韩国日本不卡| 国产精品55夜色66夜色| 国产亚洲美日韩AV中文字幕无码成人 | 亚洲欧美成人影院| 亚洲乱伦视频| a级毛片一区二区免费视频| av一区二区无码在线| 国产精品福利尤物youwu| 色吊丝av中文字幕| 麻豆精品久久久久久久99蜜桃|