日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

设计模式系列 - 解释器模式

發(fā)布時(shí)間:2025/3/15 asp.net 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式系列 - 解释器模式 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

解釋器模式通過實(shí)現(xiàn)一個(gè)表達(dá)式接口,從而能夠以指定方式解析指定內(nèi)容

介紹

解釋器模式屬于行為型模式,通過這種設(shè)計(jì)模式,我們可以定義一種特定的解釋器來解釋特定的業(yè)務(wù)場景,可以類比不同的編程語言的編譯器需要設(shè)計(jì)不同的解釋器來編譯執(zhí)行。

類圖描述

代碼實(shí)現(xiàn)

1、定義表達(dá)式接口

public interface IExpression {bool Interpret(string context); }

2、創(chuàng)建接口實(shí)體

public class TerminalExpression : IExpression {private string data;public TerminalExpression(string data){this.data = data;}public bool Interpret(string context){return context.Contains(data);} }public class AndExpression : IExpression {private IExpression expr1 = null;private IExpression expr2 = null;public AndExpression(IExpression expr1, IExpression expr2){this.expr1 = expr1;this.expr2 = expr2;}public bool Interpret(string context){return expr1.Interpret(context) && expr2.Interpret(context);} }public class OrExpression : IExpression {private IExpression expr1 = null;private IExpression expr2 = null;public OrExpression(IExpression expr1,IExpression expr2){this.expr1 = expr1;this.expr2 = expr2;}public bool Interpret(string context){return expr1.Interpret(context) || expr2.Interpret(context);} }

3、創(chuàng)建規(guī)則,上層調(diào)用

class Program {static IExpression GetMaleExpression(){IExpression robert = new TerminalExpression("Robert");IExpression john = new TerminalExpression("John");return new OrExpression(robert, john);}static IExpression GetMarriedWomanExpression(){IExpression julie = new TerminalExpression("Julie");IExpression married = new TerminalExpression("Married");return new AndExpression(julie, married);}static void Main(string[] args){IExpression isMale = GetMaleExpression();IExpression isMarriedWoman = GetMarriedWomanExpression();Console.WriteLine($"John is male? {isMale.Interpret("John")}");Console.WriteLine($"Julie is a married women? {isMarriedWoman.Interpret("Married Julie")}");Console.ReadKey();} }

總結(jié)

解釋器模式可利用的場景比較少,在遇到規(guī)則類的業(yè)務(wù)場景時(shí)可以考慮采用這種方式。

轉(zhuǎn)載于:https://www.cnblogs.com/hippieZhou/p/10085500.html

總結(jié)

以上是生活随笔為你收集整理的设计模式系列 - 解释器模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。