码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • C# 设计模式 行为型模式 之 解释器模式


    解释器模式 提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。

    总结:提供抽象 表达式 并提供参数,实现类 传参 然后比较 表达式 提供的 参数

    场景:运算表达式计算。

    优点: 1、可扩展性比较好,灵活。 2、增加了新的解释表达式的方式。 3、易于实现简单文法。

    下面 使用 简单例子 描述 解释器模式:

    1. namespace 解释器模式
    2. {
    3. internal class Program
    4. {
    5. static void Main(string[] args)
    6. {
    7. AndExpression andExpression = new AndExpression(new TerminalExpression("张三"), new TerminalExpression("张三"));
    8. bool result= andExpression.Interpret("张三");
    9. Console.WriteLine("比较结果返回:" + result);
    10. /*
    11. * 控制台 : 比较结果返回:True
    12. */
    13. }
    14. }
    15. //表达
    16. public interface Expression
    17. {
    18. bool Interpret(string context);
    19. }
    20. //比较模板
    21. public class TerminalExpression : Expression
    22. {
    23. private string data;
    24. public TerminalExpression(string data)
    25. {
    26. this.data = data;
    27. }
    28. public bool Interpret(string context)
    29. {
    30. if(data == context)
    31. {
    32. return true;
    33. }
    34. return false;
    35. }
    36. }
    37. //使用TerminalExpression模板 进行&&比较 解释表达式
    38. public class AndExpression : Expression
    39. {
    40. Expression expression1 = null;
    41. Expression expression2 = null;
    42. public AndExpression(Expression expression1, Expression expression2)
    43. {
    44. this.expression1 = expression1;
    45. this.expression2 = expression2;
    46. }
    47. public bool Interpret(string context)
    48. {
    49. return expression1.Interpret(context) && expression2.Interpret(context);
    50. }
    51. }
    52. }

    缺点: 1、可利用场景比较少。 2、对于复杂的文法比较难维护。 3、解释器模式会引起类膨胀。 

  • 相关阅读:
    aspectj切面织入
    超越 Siri 和 Alexa:探索LLM(大型语言模型)的世界
    【LeetCode贪心#09】用最少数量的箭引爆气球,无重叠区间,合并区间(涉及区间重叠情况判断与处理)
    【数模/评价模型】层次分析
    Kafka入门到精通-阶段一(入门&实战&监控)
    计算机网络的OSI七层模型
    计算机网络重点协议
    MySql 数据库【连接查询】
    安卓Android_手机安装burp的https_CA证书
    基础设施建设-企业级全栈测试平台的最佳实践
  • 原文地址:https://blog.csdn.net/q8812345qaz/article/details/127602972
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号