亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于模板方法與抽象工廠的復(fù)合模式①

        2020-06-20 07:32:18林欣欣郭元術(shù)運杰倫蘇欣欣
        計算機系統(tǒng)應(yīng)用 2020年6期
        關(guān)鍵詞:子類結(jié)構(gòu)圖選擇題

        林欣欣,郭元術(shù),運杰倫,蘇欣欣

        (長安大學(xué) 信息工程學(xué)院,西安 710064)

        引言

        自Erich Gamma、Richard Helm 等提出23 種“設(shè)計模式”[1,2]后,人們對于設(shè)計模式方面的研究越來越重視,程序設(shè)計人員對23 種設(shè)計模式進行了學(xué)習(xí)[3-5],并將其運用于實踐.

        軟件設(shè)計模式描述的是在面向?qū)ο筌浖O(shè)計過程中針對特定問題提出的解決方案,應(yīng)用該解決方案可以得到高內(nèi)聚、低耦合并且復(fù)用性更高的程序.這些方案并不是人們一開始就采用的設(shè)計方案,而是為增加軟件的靈活性和可復(fù)性進行的總結(jié)[1].

        面向?qū)ο蟪绦蛟O(shè)計原則[6]包含開閉、依賴倒置、單一職責(zé)等7 條原則.為保證軟件的靈活性、可復(fù)用性以及健壯性各個原則均是需要努力保證滿足的.

        程序設(shè)計人員在實踐過程中發(fā)現(xiàn)獨立的應(yīng)用某一種設(shè)計模式,并不能很好的滿足程序設(shè)計的需求.如文獻《模板方法模式的改進》[7]通過將策略者模式嵌入到模板方法模式,從而對模板方法模式進行改進,該模式是將延遲到子類的算法的不同實現(xiàn)方式寫入到各個類,各個類之間可以相互替換.

        本文將討論模板方法及抽象工廠模式,并將抽象工廠模式放在模板方法模式中進行討論,最終給出復(fù)合模式.本文的復(fù)合模式側(cè)重點在于延遲到子類的算法如果使用到具體的其他的類,如何在保證“單一職責(zé)”的原則下進行其他具體類對象的引用,并且使得各個子類的替換較為便捷.復(fù)合模式還在一定程度上解決了模板方法模式由于變化的子類實現(xiàn)方式過多而造成系統(tǒng)龐大的問題,并且給出了復(fù)合模式的UML 結(jié)構(gòu)圖,其他程序設(shè)計人員可以直接復(fù)用該復(fù)合模式.

        1 模板方法模式

        模板方法模式[8]UML 結(jié)構(gòu)圖[9-11]如圖1所示.

        圖1 模板方法模式結(jié)構(gòu)圖

        模板方法模式中包括兩類參與者:

        (1)算法定義類(AbstractClass):該類包括模板方法、具體方法、抽象方法.在結(jié)構(gòu)圖中TemplateMethod()為模板方法,PrimitiveOperation1()與PrimitiveOperation2()為模板方法中的兩個抽象操作.

        (2)具體實現(xiàn)類(ConcreteClass):重新定義模板方法中的抽象操作以提供具體的行為.ConcreteClass 類實現(xiàn)方式的不同可以使得算法的實現(xiàn)各不相同.

        2 抽象工廠模式

        抽象工廠模式[12,13]UML 結(jié)構(gòu)圖如圖2所示.

        圖2 抽象工廠模式結(jié)構(gòu)圖

        抽象工廠模式中包括5 類參與者:

        (1)抽象工廠(AbstractFactory):以抽象的方式創(chuàng)建一個完整的產(chǎn)品族.

        (2)具體工廠(Factory1,Factory2):創(chuàng)建具體的產(chǎn)品對象,不同的具體工廠對配置不同的具體產(chǎn)品進行生產(chǎn).

        (3)抽象產(chǎn)品(AbstractProductA,AbstractProductB):對一類產(chǎn)品進行抽象,為一類產(chǎn)品對象聲明一個接口.

        (4)具體產(chǎn)品(ProductA1,ProductA2,ProductB1,ProductB2):有著自己獨特配置的產(chǎn)品,被相應(yīng)的具體工廠所生產(chǎn).

        (5)代碼調(diào)用者(Client):Client 不是人,而是代碼的調(diào)用者.

        3 復(fù)合模式的設(shè)計

        模板方法模式的意圖是:父類定義一個算法的框架,用模板方法規(guī)定算法的執(zhí)行步驟,將可變的步驟延遲到子類實現(xiàn),每一種不同的實現(xiàn)都定義一個新的子類,父類調(diào)用子類,子類對父類進行靈活的拓展.在本文的模板方法模式中,如果延遲到具體子類ConcreteClass的抽象操作PrimitiveOperation1()是從多個產(chǎn)品族中選取一種產(chǎn)品族實現(xiàn)算法步驟,如果將所有類型以實例化的形式寫在ConcreteClass 中,代碼復(fù)用性不高、靈活性不強.因此考慮將抽象工廠模式嵌入到模板方法模式中.抽象工廠模式的意圖是:在抽象工廠類中以抽象的形式創(chuàng)建一個完整的產(chǎn)品族,在創(chuàng)建產(chǎn)品族的過程中不關(guān)注產(chǎn)品的具體實現(xiàn)類.用戶只需根據(jù)自己所需產(chǎn)品族的類型選擇具體工廠,而不需要關(guān)注產(chǎn)品族中產(chǎn)品的創(chuàng)建.創(chuàng)建一個抽象工廠AbstractFactory,該抽象工廠創(chuàng)建一個完整的產(chǎn)品族,其子類具體工廠ConcreteFactory1、ConcreteFactory2 等生產(chǎn)產(chǎn)品類型各不相同的具體產(chǎn)品,并且當(dāng)需要添加新的產(chǎn)品類型時只需添加AbstractFactory 的子類即可,而無需改動其他的類,延遲到ConcreteClass 中的算法步驟就可以在不指定產(chǎn)品類型的情況下創(chuàng)建一個AbstractFactory的引用,并將該引用指向子類對象ConcreteFactory1或ConcreteFactory2,從而獲得產(chǎn)品對象[14].在此過程中,產(chǎn)品對象的獲得不是通過直接new 的方式,而是通過函數(shù)的調(diào)用,這樣使得對象的創(chuàng)建和對象實現(xiàn)的業(yè)務(wù)相分離,降低系統(tǒng)的耦合度.AbstractClass 通過對ConcreteClass 的調(diào)用完成全部的算法流程.

        復(fù)合模式UML 結(jié)構(gòu)圖如圖3所示.

        圖3 復(fù)合模式結(jié)構(gòu)圖

        復(fù)合模式中包括6 類參與者:

        (1)算法定義類(AbstractClass):作用同模板方法模式中的算法定義類.

        (2)具體實現(xiàn)類(ConcreteClass):作用同模板方法模式中的具體實現(xiàn)類,同時,又充當(dāng)抽象工廠模式中的Client 接口.

        (3)抽象工廠(AbstractFactory):作用同抽象工廠模式中的抽象工廠類.

        (4)具體工廠(Factory1,Factory2):作用同抽象工廠模式中的具體工廠類.

        (5)抽象產(chǎn)品(AbstractProductA,AbstractProductB):作用同抽象工廠模式中的抽象產(chǎn)品類.

        (6)具體產(chǎn)品(ProductA1,ProductA2,ProductB1,ProductB2):作用同抽象工廠模式中的具體產(chǎn)品類.

        4 復(fù)合模式的實現(xiàn)

        考試期間有個別同學(xué)作弊是一直存在的問題.某老師為解決該問題,給出的解決方案是:按照個人學(xué)號分配試卷,試卷題目相同,但出現(xiàn)順序不同.該方案確實能一定程度上解決同學(xué)之間相互抄襲的問題,但并不能完全杜絕.并且,該方案對改卷老師并不友好,要求改卷老師能明確知道每道題目的答案.批改試卷的效率較低,難度較大.

        對于各高校而言,存在足夠的資源進行上機測試.復(fù)合模式應(yīng)用于在線測試系統(tǒng)的后臺程序編程中,并將結(jié)果放到頁面顯示.后臺結(jié)構(gòu)圖如圖4所示.

        圖4 考試模塊結(jié)構(gòu)圖

        算法中包括6 類參與者:

        (1)考試抽象類:模板方法定義完成考試的步驟.其中生成試卷功能交給子類具體實現(xiàn).

        (2)考試實現(xiàn)類:通過使用試卷生成工廠及其子類對象完成試卷生成功能.

        (3)試卷生成工廠:定義產(chǎn)品族,產(chǎn)品族包括選擇題與填空題.

        (4)易試卷生成工廠、難試卷生成工廠:分別返回難易程度為易與難的選擇題對象與填空題對象.

        (5)選擇題抽象類、填空題抽象類:分別定義選擇題與填空題的共性以便子類進行繼承.

        (6)易選擇題、難選擇題、易填空題、難填空題:從數(shù)據(jù)庫中查詢并返回對應(yīng)難度的選擇題或者填空題.

        4.1 核心功能代碼

        (1)考試抽象類:

        (2)考試實現(xiàn)類:

        (3)試卷生成工廠:

        (4)易試卷生成工廠:

        (5)選擇題抽象類:

        (6)易選擇題:

        4.2 運行結(jié)果

        本文首先以試卷列表的形式展示生成的試卷.如圖5所示,試卷因難易程度不同而題目編號各不相同.

        難度系數(shù)為易、難的選擇題如圖6所示.

        在本項目中,若用戶需要試卷難易程度為“中等”的試卷,只需創(chuàng)建新的“中等選擇題”類、“中等填空題”類與“中等試卷生成工廠”類,新建的類各自繼承其父類,重寫父類的方法.“試卷生成工廠”以上的程序結(jié)構(gòu)均不需要改變,該過程充分體現(xiàn)了程序的靈活性.因為該程序遵循“單一職責(zé)”原則,即每個類只具有單一的功能,當(dāng)其他項目需要題目類,如選擇題類,可以直接使用該類及其子類,即該程序具有可復(fù)用性.新增“中等”難度的試卷如圖7所示.

        5 結(jié)束語

        復(fù)合模式的優(yōu)點:本文中復(fù)合模式是指將抽象工廠模式嵌入到模板方法模式中從而形成的集成兩者優(yōu)點的新模式.模板方法模式的反向控制機制保證了算法整體的穩(wěn)定性,反向控制機制的原理為:父類調(diào)用子類,子類對父類進行靈活的拓展.抽象工廠模式的優(yōu)點一:它將具體的類進行了分離,工廠對具體產(chǎn)品的創(chuàng)建過程進行了封裝,在不實例化的情況下創(chuàng)建產(chǎn)品對象.抽象工廠模式的優(yōu)點二:產(chǎn)品族的替換方便,抽象工廠以抽象的形式實現(xiàn)了一個完整的產(chǎn)品族的創(chuàng)建,每個具體工廠生產(chǎn)配置不同的產(chǎn)品族.具體工廠類只在創(chuàng)建抽象工廠對象的時候出現(xiàn)一次,因此具體工廠的替換很容易.復(fù)合模式集成了二者的優(yōu)點,對延遲到子類的算法步驟的實現(xiàn)進行了靈活的擴展,保證了算法結(jié)構(gòu)的穩(wěn)定性,又分離了具體的實現(xiàn)類,使得系統(tǒng)的健壯性、靈活性以及可復(fù)用性得到了增強.

        圖6 選擇題題目

        圖7 試卷列表

        復(fù)合模式的缺點:難以支持新種類的產(chǎn)品.

        復(fù)合模式的適用性:需實現(xiàn)算法的邏輯框架相同,但每個步驟根據(jù)對象不同而實現(xiàn)的細(xì)節(jié)不同,且該細(xì)節(jié)是從多個產(chǎn)品族中選取的一個系列進行實現(xiàn).

        猜你喜歡
        子類結(jié)構(gòu)圖選擇題
        “因式分解”大顯身手
        中國共產(chǎn)黨第二十屆中央組織結(jié)構(gòu)圖
        單項選擇題狂練
        卷入Hohlov算子的某解析雙單葉函數(shù)子類的系數(shù)估計
        數(shù)列選擇題精選精練
        概率知識結(jié)構(gòu)圖
        關(guān)于對稱共軛點的倒星象函數(shù)某些子類的系數(shù)估計
        第十九屆中共中央組織結(jié)構(gòu)圖
        十種妙招握在手 破解選擇題無憂
        塊H矩陣新的子類
        又白又嫩毛又多15p| 亚洲av天堂一区二区| 精品人妻一区二区三区视频| 国产欧美一区二区精品久久久| 国产成人精品日本亚洲| 国产九色AV刺激露脸对白| 亚洲国产精品成人av| 高清日韩av在线免费观看| 精品无码国产一区二区三区av| 精品视频一区二区三三区四区| 亚洲成a人片在线观看高清| 日本一区二区三区高清视| 性刺激的大陆三级视频| 蜜臀av一区二区| 久久久精品国产亚洲麻色欲| 久久精品亚洲精品国产区| 国产精品99无码一区二区| 蜜桃精品免费久久久久影院| 国产呦系列呦交| 日韩人妻久久中文字幕| 被三个男人绑着躁我好爽视频| 久久亚洲黄色| 国产精品久久夜伦鲁鲁| 亚洲国产精品高清一区| 欧美性受xxxx白人性爽| 伊人久久亚洲综合影院首页| 国产自拍精品在线视频| 亚洲国产精品久久艾草| 国产乱子伦视频大全| 特一级熟女毛片免费观看| 中文字幕亚洲精品在线| 边喂奶边中出的人妻| 图图国产亚洲综合网站| 亚洲中文字幕亚洲中文| 蜜臀av在线观看| 国产在线精品一区二区不卡| 黑丝美女被内射在线观看| 国产日韩厂亚洲字幕中文| 熟妇人妻av中文字幕老熟妇| 青草蜜桃视频在线观看| 国产一区二区av在线免费观看 |