国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Unity實(shí)現(xiàn)設(shè)計(jì)模式——解釋器模式

這篇具有很好參考價(jià)值的文章主要介紹了Unity實(shí)現(xiàn)設(shè)計(jì)模式——解釋器模式。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

Unity實(shí)現(xiàn)設(shè)計(jì)模式——解釋器模式

解釋器模式(Interpreter Pattern)是一種按照規(guī)定語法進(jìn)行解析的模式,現(xiàn)實(shí)項(xiàng)目中用得較少。 給定一門語言,定義它的文法的一種表示,并定義一個(gè)解釋器,該解釋器使用該表示來解釋語言中的句子。
Unity實(shí)現(xiàn)設(shè)計(jì)模式——解釋器模式,設(shè)計(jì)模式,unity,設(shè)計(jì)模式,解釋器模式
下面用一個(gè)例子演示:將羅馬文字轉(zhuǎn)換為十進(jìn)制的格式

1.Context

    class Context
    {
        private string _input;
        private int _output;

        // Constructor
        public Context(string input)
        {
            this._input = input;
        }

        // Gets or sets input
        public string Input
        {
            get { return _input; }
            set { _input = value; }
        }

        // Gets or sets output
        public int Output
        {
            get { return _output; }
            set { _output = value; }
        }
    }

2.Expression

解釋器基類

    abstract class Expression
    {
        //"MCMXXVIII";
        public void Interpret(Context context)
        {
            if (context.Input.Length == 0)
                return;

            if (context.Input.StartsWith(Nine()))
            {
                context.Output += (9 * Multiplier());
                context.Input = context.Input.Substring(2);
            }
            else if (context.Input.StartsWith(Four()))
            {
                context.Output += (4 * Multiplier());
                context.Input = context.Input.Substring(2);
            }
            else if (context.Input.StartsWith(Five()))
            {
                context.Output += (5 * Multiplier());
                context.Input = context.Input.Substring(1);
            }

            while (context.Input.StartsWith(One()))
            {
                context.Output += (1 * Multiplier());
                context.Input = context.Input.Substring(1);
            }
        }

        public abstract string One();
        public abstract string Four();
        public abstract string Five();
        public abstract string Nine();
        public abstract int Multiplier();
    }

3.ThousandExpression

千位數(shù)字解釋器

    class ThousandExpression : Expression
    {
        public override string One() { return "M"; }
        public override string Four() { return " "; }
        public override string Five() { return " "; }
        public override string Nine() { return " "; }
        public override int Multiplier() { return 1000; }
    }

4.HundredExpression

百位數(shù)字解釋器

    class HundredExpression : Expression
    {
        public override string One() { return "C"; }
        public override string Four() { return "CD"; }
        public override string Five() { return "D"; }
        public override string Nine() { return "CM"; }
        public override int Multiplier() { return 100; }
    }

5.TenExpression

十位數(shù)字解釋器

    class TenExpression : Expression
    {
        public override string One() { return "X"; }
        public override string Four() { return "XL"; }
        public override string Five() { return "L"; }
        public override string Nine() { return "XC"; }
        public override int Multiplier() { return 10; }
    }

6.OneExpression

個(gè)位數(shù)字解釋器文章來源地址http://www.zghlxwxcb.cn/news/detail-729192.html

    class OneExpression : Expression
    {
        public override string One() { return "I"; }
        public override string Four() { return "IV"; }
        public override string Five() { return "V"; }
        public override string Nine() { return "IX"; }
        public override int Multiplier() { return 1; }
    }

7.測(cè)試

    public class InterpreterExample1 : MonoBehaviour
    {
        void Start()
        {
            string roman = "MCMXXVIII";
            Context context = new Context(roman);

            // Build the 'parse tree'
            List<Expression> tree = new List<Expression>();
            tree.Add(new ThousandExpression());
            tree.Add(new HundredExpression());
            tree.Add(new TenExpression());
            tree.Add(new OneExpression());

            // Interpret
            foreach (Expression exp in tree)
            {
                exp.Interpret(context);
            }

            Debug.Log(roman+" = "+ context.Output);
        }
    }

到了這里,關(guān)于Unity實(shí)現(xiàn)設(shè)計(jì)模式——解釋器模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 設(shè)計(jì)模式詳解-解釋器模式

    類型:行為型模式 實(shí)現(xiàn)原理:實(shí)現(xiàn)了一個(gè)表達(dá)式接口,該接口使用標(biāo)識(shí)來解釋語言中的句子 作用:給定一個(gè)語言,定義它的文法表示,并定義一個(gè)解釋器,這個(gè)解釋器來解釋。 主要解決:一些重復(fù)的固定文法分別創(chuàng)建解釋器會(huì)很麻煩 何時(shí)使用:某一種特定類型的問題發(fā)生的

    2024年02月12日
    瀏覽(91)
  • 設(shè)計(jì)模式(23)解釋器模式

    設(shè)計(jì)模式(23)解釋器模式

    一、介紹: 1、定義:解釋器(Interpreter)模式是一種對(duì)象的行為模式。給定一個(gè)語言,定義它的文法的一種表示,并定義一個(gè)解釋器,這個(gè)解釋器使用該表示來解釋語言中的句子。 2、組成結(jié)構(gòu): (1)AbstractExpression(抽象表達(dá)式):約定解釋器的解釋操作,主要是一個(gè)interpret()方

    2024年02月06日
    瀏覽(99)
  • 解釋器設(shè)計(jì)模式

    解釋器設(shè)計(jì)模式

    解釋器設(shè)計(jì)模式(Interpreter Pattern)是一種行為型設(shè)計(jì)模式,它定義了一種語言的文法,并建立一個(gè)解釋器來解釋該語言中的句子。這種模式通常用于需要解釋或執(zhí)行一種特定類型的語言的場(chǎng)景,例如編程語言的編譯器或解釋器、規(guī)則引擎系統(tǒng)等。 關(guān)鍵組成部分 抽象表達(dá)式(

    2024年02月21日
    瀏覽(93)
  • 設(shè)計(jì)模式(行為型模式)解釋器模式

    ?? 解釋器模式(Interpreter Pattern) 是一種行為設(shè)計(jì)模式,用于解釋特定語言或處理特定問題領(lǐng)域的語法或表達(dá)式。它定義了一種語言的語法表示,并使用該表示來解釋語言中的句子。通常用于構(gòu)建解析器、編譯器和規(guī)則評(píng)估引擎等場(chǎng)景。 在解釋器模式中,有以下關(guān)鍵角色:

    2024年02月20日
    瀏覽(96)
  • Java設(shè)計(jì)模式-解釋器模式

    Java設(shè)計(jì)模式-解釋器模式

    一、概述 如上圖,設(shè)計(jì)一個(gè)軟件用來進(jìn)行加減計(jì)算。我們第一想法就是使用工具類,提供對(duì)應(yīng)的加法和減法的工具方法。 上面的形式比較單一、有限,如果形式變化非常多,這就不符合要求,因?yàn)榧臃ê蜏p法運(yùn)算,兩個(gè)運(yùn)算符與數(shù)值可以有無限種組合方式。比如 1+2+3+4+5、

    2024年01月17日
    瀏覽(96)
  • js設(shè)計(jì)模式:解釋器模式

    js設(shè)計(jì)模式:解釋器模式

    對(duì)文本進(jìn)行解釋和編譯的時(shí)候,就會(huì)用到解釋器模式 比如你寫了一段js代碼,js引擎就會(huì)去解釋并執(zhí)行這段代碼 webpack中的各種loader就是用來解釋各種文件類型的,并將其解釋為js可識(shí)別的代碼

    2024年02月22日
    瀏覽(103)
  • 設(shè)計(jì)模式之解釋器模式筆記

    設(shè)計(jì)模式之解釋器模式筆記

    記錄下學(xué)習(xí)設(shè)計(jì)模式-解釋器模式的寫法。JDK使用版本為1.8版本。 意圖 :定義一個(gè)語言,定義它的文法的一種表示,并定義一個(gè)解釋器,這個(gè)解釋器使用該表示來解釋語言中的句子。 結(jié)構(gòu) : 其中: AbstractExpression 聲明一個(gè)程序的解釋操作,這個(gè)接口為抽象語法樹中所有的結(jié)點(diǎn)所

    2024年02月11日
    瀏覽(94)
  • 設(shè)計(jì)模式之解釋器模式(下)

    設(shè)計(jì)模式之解釋器模式(下)

    3)Context的作用 1.概述 在解釋器模式中,環(huán)境類Context用于存儲(chǔ)解釋器之外的一些全局信息,它通常作為參數(shù)被傳遞到所有表達(dá)式的解釋方法interpret()中,可以在Context對(duì)象中存儲(chǔ)和訪問表達(dá)式解釋器的狀態(tài),向表達(dá)式解釋器提供一些全局的、公共的數(shù)據(jù),此外還可以在Context中

    2024年04月12日
    瀏覽(91)
  • 設(shè)計(jì)模式(十五)解釋器

    設(shè)計(jì)模式(十五)解釋器

    定義一個(gè)語言的文法,并且建立一個(gè)解釋器來解釋該語言中的句子,這里的“語言”是指使用規(guī)定格式和語法的代碼。解釋器模式是一種行為型模式。 解釋器模式是一種使用頻率相對(duì)較低但學(xué)習(xí)難度較大的設(shè)計(jì)模式,它主要用于描述如何使用面向?qū)ο笳Z言構(gòu)成一個(gè)簡(jiǎn)單的語言

    2024年02月05日
    瀏覽(89)
  • 解鎖Spring Boot中的設(shè)計(jì)模式—02.解釋器模式:探索【解釋器模式】的奧秘與應(yīng)用實(shí)踐!

    解鎖Spring Boot中的設(shè)計(jì)模式—02.解釋器模式:探索【解釋器模式】的奧秘與應(yīng)用實(shí)踐!

    解釋器模式(Interpreter Pattern)是一種行為設(shè)計(jì)模式,它用于定義語言的文法,并且解釋語言中的表達(dá)式。在Java中,解釋器模式可以用于構(gòu)建解釋器以解析特定的語言或表達(dá)式,如數(shù)學(xué)表達(dá)式、查詢語言等。 優(yōu)點(diǎn): 靈活性: 解釋器模式可以 靈活地添加新的表達(dá)式和規(guī)則 ,因

    2024年02月19日
    瀏覽(96)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包