欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

C#設(shè)計(jì)模式(14)——模板方法模式(TemplateMethod)-創(chuàng)新互聯(lián)

一、引言

提到模板,大家肯定不免想到生活中的“簡歷模板”、“論文模板”、“Word中模版文件”等,在現(xiàn)實(shí)生活中,模板的概念就是——有一個(gè)規(guī)定的格式,然后每個(gè)人都可以根據(jù)自己的需求或情況去更新它,例如簡歷模板,下載下來的簡歷模板的格式都是相同的,然而我們下載下來簡歷模板之后我們可以根據(jù)自己的情況填充不同的內(nèi)容要完成屬于自己的簡歷。在設(shè)計(jì)模式中,模板方法模式中模板和生活中模板概念非常類似,下面讓我們就詳細(xì)介紹模板方法的定義,大家可以根據(jù)生活中模板的概念來理解模板方法的定義。

為陽曲等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及陽曲網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、陽曲網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

二、模板方法模式詳細(xì)介紹

2.1 模板方法模式的定義

模板方法模式——在一個(gè)抽象類中定義一個(gè)操作中的算法骨架(對(duì)應(yīng)于生活中的大家下載的模板),而將一些步驟延遲到子類中去實(shí)現(xiàn)(對(duì)應(yīng)于我們根據(jù)自己的情況向模板填充內(nèi)容)。模板方法使得子類可以不改變一個(gè)算法的結(jié)構(gòu)前提下,重新定義算法的某些特定步驟,模板方法模式把不變行為搬到超類中,從而去除了子類中的重復(fù)代碼。

2.2 模板方法模式的實(shí)現(xiàn)

理解了模板方法的定義之后,自然實(shí)現(xiàn)模板方法也不是什么難事了,下面以生活中炒蔬菜為例來實(shí)現(xiàn)下模板方法模式。在現(xiàn)實(shí)生活中,做蔬菜的步驟都大致相同,如果我們針對(duì)每種蔬菜類定義一個(gè)燒的方法,這樣在每個(gè)類中都有很多相同的代碼,為了解決這個(gè)問題,我們一般的思路肯定是把相同的部分抽象出來到抽象類中去定義,具體子類來實(shí)現(xiàn)具體的不同部分,這個(gè)思路也正式模板方法的實(shí)現(xiàn)精髓所在,具體實(shí)現(xiàn)代碼如下:

// 客戶端調(diào)用
    class Client
    {
        static void Main(string[] args)
        {
            // 創(chuàng)建一個(gè)菠菜實(shí)例并調(diào)用模板方法
            Spinach spinach = new Spinach();
            spinach.CookVegetabel();
            Console.Read();
        }
    }
    public abstract class Vegetabel
    {
        // 模板方法,不要把模版方法定義為Virtual或abstract方法,避免被子類重寫,防止更改流程的執(zhí)行順序
        public  void CookVegetabel()
        {
            Console.WriteLine("抄蔬菜的一般做法");
            this.pourOil();
            this.HeatOil();
            this.pourVegetable();
            this.stir_fry();
        }
        // 第一步倒油
        public  void pourOil()
        {
            Console.WriteLine("倒油");
        }
        // 把油燒熱
        public  void HeatOil()
        {
            Console.WriteLine("把油燒熱");
        }
        // 油熱了之后倒蔬菜下去,具體哪種蔬菜由子類決定
        public abstract void pourVegetable();
        // 開發(fā)翻炒蔬菜
        public  void stir_fry()
        {
            Console.WriteLine("翻炒");
        }
    }
    // 菠菜
    public class Spinach : Vegetabel
    {
           
        public override void pourVegetable()
        {
            Console.WriteLine("倒菠菜進(jìn)鍋中");
        }
    }
    // 大白菜
    public class ChineseCabbage : Vegetabel
    {     
        public override void pourVegetable()
        {
            Console.WriteLine("倒大白菜進(jìn)鍋中");
        }
    }

在上面的實(shí)現(xiàn)中,具體子類中重寫了導(dǎo)入蔬菜種類的方法,因?yàn)檫@個(gè)真是燒菜方法中不同的地方,所以由具體子類去實(shí)現(xiàn)它。

2.3 模板方法模式的類圖

實(shí)現(xiàn)完模板方法模式之后,讓我們看看模板方法的類圖結(jié)構(gòu),以理清該模式中類之間的關(guān)系,具體類圖如下:

C#設(shè)計(jì)模式(14)——模板方法模式(Template Method)

模板方法模式中涉及了兩個(gè)角色:

  • 抽象模板角色(Vegetable扮演這個(gè)角色):定義了一個(gè)或多個(gè)抽象操作,以便讓子類實(shí)現(xiàn),這些抽象操作稱為基本操作。

  • 具體模板角色(ChineseCabbage和Spinach扮演這個(gè)角色):實(shí)現(xiàn)父類所定義的一個(gè)或多個(gè)抽象方法。

三、模板方法模式的優(yōu)缺點(diǎn)

下面讓我們繼續(xù)分析下模板方法的優(yōu)缺點(diǎn)。

優(yōu)點(diǎn):

  1. 實(shí)現(xiàn)了代碼復(fù)用

  2. 能夠靈活應(yīng)對(duì)子步驟的變化,符合開放-封閉原則

缺點(diǎn):因?yàn)橐肓艘粋€(gè)抽象類,如果具體實(shí)現(xiàn)過多的話,需要用戶或開發(fā)人員需要花更多的時(shí)間去理清類之間的關(guān)系。

附:在.NET中模板方法的應(yīng)用也很多,例如我們?cè)陂_發(fā)自定義的Web控件或WinForm控件時(shí),我們只需要重寫某個(gè)控件的部分方法。

四、總結(jié)

到這里,模板方法的介紹就結(jié)束了,模板方法模式在抽象類中定義了算法的實(shí)現(xiàn)步驟,將這些步驟的實(shí)現(xiàn)延遲到具體子類中去實(shí)現(xiàn),從而使所有子類復(fù)用了父類的代碼,所以模板方法模式是基于繼承的一種實(shí)現(xiàn)代碼復(fù)用的技術(shù)。

附件:http://down.51cto.com/data/2363674

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

新聞名稱:C#設(shè)計(jì)模式(14)——模板方法模式(TemplateMethod)-創(chuàng)新互聯(lián)
本文鏈接:http://aaarwkj.com/article2/cojhoc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、網(wǎng)站營銷、營銷型網(wǎng)站建設(shè)企業(yè)建站、云服務(wù)器、定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司
婷婷激情五月国产丝袜| 夫妻在线观看高清视频| 2020年最新国产三级网站| 日本成人午夜福利电影| 亚洲综合色视频在线播放| 色日韩在线观看视频| 91伊人激情综合久久| 国语对白精品视频在线| 日本一区二区免费高清不卡| 蜜臀99久久精品久久久| 国产成人亚洲精品另类动态| 国产精品一区二区久久蜜桃麻豆| 伊人婷婷综合激情网| 久久亚洲精品1区2区| 韩日av一区二区三区| 精品人妻一区二区三区蜜桃视频| 国产精品av一区二区在线| 美女午夜福利一区二区| 色婷婷av一二三区竹菊| 亚洲色图视频免费观看| 欧美日韩欧美黄色三级| 粉嫩一区二区三区av| 日韩中文字幕免费一区二区| 欧美生活一区二区三区| 久久精品国产亚洲av高清观看| 国产亚洲精品免费专线视频| 欧美一区二区三区久久妇| 一区二区三区蜜桃av| 少妇人妻系列中文在线| 久久亚洲一区二区内射| 亚洲av中文久久精品国内| 久草福利在线观看免费| 亚洲一区有码在线观看| 久久青草视频在线观看| 中日韩一二三四区在线看| 蜜桃视频在线观看91| 黑人一区二区三区在线| 四虎免费在线视频观看| 亚洲综合一区二区精品久久| 国产精品免费视频能看的| 日韩二区三区精品视频|