欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
設計模式學(xué)習筆記(十六)——Template Method模板方法模式

       今天開(kāi)始學(xué)習設計模式中的第三個(gè)類(lèi)型——行為型模式。

行為模式:

行為型模式涉及到算法和對象間職責的分配。將注意力從控制流轉移到對象間的聯(lián)系方式上來(lái)。

       行為模式分為:行為類(lèi)模式和行為對象模式。行為類(lèi)模式使用繼承機制在類(lèi)間分派行為;行為對象模式使用對象復合而不是繼承。

Template Method模板方法模式

       Template Method模板方法模式介紹:

       Template Method模板方法模式是一種行為型模式,具體點(diǎn)說(shuō)是行為類(lèi)型模式。主要解決在軟件構建過(guò)程中,對于某一項任務(wù),常常有穩定的整體操作結構,但各個(gè)子步驟卻有很多改變的需求,或者由于固有的原因而無(wú)法和任務(wù)的整體結構同時(shí)實(shí)現。

       GoF《設計模式》中說(shuō)道:定義一個(gè)操作中的算法的骨架,而將一些步驟延遲到子類(lèi)中。Template Method使得子類(lèi)可以不改變一個(gè)算法的結構即可重定義該算法的某些特定步驟

       Template Method模式的結構


       定義場(chǎng)景

       單看結構不好理解,我們來(lái)結合程序進(jìn)行分析?,F在定義一個(gè)場(chǎng)景:我想大家都玩過(guò)極品飛車(chē)(我相當喜歡)。游戲中有很多的汽車(chē),但是從操作角度看大同小異。無(wú)非是起步(StartUp)、行駛(Run)、停車(chē)(Stop)等等行為。汽車(chē)行駛的動(dòng)作之間可能存在著(zhù)差異,例如:手動(dòng)檔和自動(dòng)檔,但是接口是一樣的,換句話(huà)說(shuō),基本都是這幾個(gè)動(dòng)作。結合Template Method模式講就是在這個(gè)程序中,結構(對汽車(chē)的操作)是穩定的,但是變化在于各個(gè)子步驟(操作行為的具體實(shí)現)。

       程序實(shí)現與結構分析

       首先我們需要一個(gè)汽車(chē)的抽象類(lèi)(結構圖中的AbstractClass

       public abstract class AbstractCar

    {

        protected abstract string StartUp();

        protected abstract string Run();

        protected abstract string Stop();

 

        public void DriveOnTheRoad()

        {

            Console.WriteLine(StartUp());

            Console.WriteLine(Run());

            Console.WriteLine(Stop());

        }

}

在這段代碼中,抽象方法StartUp、Run、Stop叫做primitive operation(原語(yǔ)操作),它們是在子類(lèi)中的擴展點(diǎn),例如我們要編寫(xiě)一輛BORA的實(shí)現,在他繼承AbstractCar后,可以在這幾個(gè)primitive operation上進(jìn)行自己個(gè)步驟的實(shí)現。

AbstractCar中的DriveOnTheRoad方法叫做template method(模板方法),template methodprimitive operation定義一個(gè)算法,是相對穩定的部分。(子類(lèi)中重新定義primitive operation)。

    然后我們要實(shí)現一輛BORA汽車(chē)(結構圖中的ConcreteClass

    public class BORA : AbstractCar

    {

        protected override string StartUp()

        {

            return "BORA is StartUp";

        }

 

        protected override string Run()

        {

            return "BORA is Running";

        }

 

        protected override string Stop()

        {

            return "BORA is Stoped";

        }

}

接下來(lái)我們進(jìn)行客戶(hù)程序的實(shí)現

class Program

    {

        static void Main(string[] args)

        {

            ClientApp.Drive(new BORA());

            Console.Read();

        }

}

public class ClientApp

    {

        public static void Drive(AbstractCar car)

        {

            car.DriveOnTheRoad();

        }

}

運行結果如下:

BORA is StartUp

BORA is Running

BORA is Stoped

   


Template Method要點(diǎn)

1、  Template Method模式是一種非?;A性的設計模式,在面向對象系統中有著(zhù)大量的應用。它用最簡(jiǎn)潔的機制(虛函數的多態(tài)性)為了很多應用程序框架提供了靈活的擴展點(diǎn),是代碼復用方面的基本實(shí)現結構。

2、  除了可以靈活應對子步驟的變化外,“Don‘t call me.Let me Call you”的反向控制結構是Template Method的典型應用。“Don’t call me.Let me Call you”是指一個(gè)父類(lèi)調用一個(gè)子類(lèi)的操作,而不是相反。

3、  在具體實(shí)現方面,被Template Method調用的虛方法可以具有實(shí)現,也可以沒(méi)有任何實(shí)現(抽象方法、純虛方法),但一般推薦將它們設置為protected方法??梢詻](méi)有具體實(shí)現的方法應該稱(chēng)為hook operation(鉤子操作),提供了缺省的行為,子類(lèi)可以在必要時(shí)進(jìn)行擴展。

4、  盡量減少primitive operation,因為需要重新定義的操作越多,客戶(hù)程序就越長(cháng)

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Template method pattern 模板方法模式
模板方法模式(Template Method)案例分析 - jia
設計模式 ( 十九 ) 模板方法模式Template method(類(lèi)行為型)
《Head First設計模式》閱讀筆記.第八章
《設計模式精解》學(xué)習筆記
spring中的設計模式解析
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久