电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

PHP設計模式之解釋器模式淺析

瀏覽:229日期:2022-06-10 18:27:02
目錄
  • 解釋器模式(Interpreter Pattern)是什么
  • 解釋器模式的優(yōu)點
  • 解釋器模式的實現(xiàn)
  • 解釋器模式的使用
  • 總結

解釋器模式(Interpreter Pattern)是什么

解釋器模式是一種行為型模式,它定義了一種語言文法,并且定義了一個解釋器,用來解釋這種語言的語句。這種類型的設計模式屬于行為型模式,它允許您將業(yè)務規(guī)則表示為表達式,從而可以將其與其他表達式組合起來,形成復雜的規(guī)則。

解釋器模式的優(yōu)點

  • 解釋器模式可以將復雜的業(yè)務規(guī)則分解為簡單的表達式,使得規(guī)則更加清晰;
  • 解釋器模式可以擴展語言文法,增加新的操作符和表達式;
  • 解釋器模式可以通過組合表達式來構建復雜的規(guī)則。

解釋器模式的實現(xiàn)

在 PHP 中,我們可以使用以下方式來實現(xiàn)解釋器模式:

<?php
// 抽象表達式類
abstract class Expression
{
    abstract public function interpret($context);
}
// 終結符表達式類
class TerminalExpression extends Expression
{
    public function interpret($context)
    {
if (strpos($context, $this->data) !== false) {
    return true;
}
return false;
    }
}
// 非終結符表達式類
class OrExpression extends Expression
{
    protected $expr1;
    protected $expr2;
    public function __construct(Expression $expr1, Expression $expr2)
    {
$this->expr1 = $expr1;
$this->expr2 = $expr2;
    }
    public function interpret($context)
    {
return $this->expr1->interpret($context) || $this->expr2->interpret($context);
    }
}
class AndExpression extends Expression
{
    protected $expr1;
    protected $expr2;
    public function __construct(Expression $expr1, Expression $expr2)
    {
$this->expr1 = $expr1;
$this->expr2 = $expr2;
    }
    public function interpret($context)
    {
return $this->expr1->interpret($context) && $this->expr2->interpret($context);
    }
}
// 上下文類
class Context
{
    protected $context;
    public function __construct($context)
    {
$this->context = $context;
    }
    public function getContext()
    {
return $this->context;
    }
}
// 客戶端代碼
$context = new Context("Hello, World!");
$terminal1 = new TerminalExpression("Hello");
$terminal2 = new TerminalExpression("World");
$orExpression = new OrExpression($terminal1, $terminal2);
$andExpression = new AndExpression($terminal1, $terminal2);
echo $orExpression->interpret($context->getContext()) ? "True\n" : "False\n";
echo $andExpression->interpret($context->getContext()) ? "True\n" : "False\n";

在上面的實現(xiàn)中,我們首先定義了一個抽象表達式類,它包含一個抽象方法 interpret()。然后,我們定義了終結符表達式類和非終結符表達式類,它們分別實現(xiàn)了 interpret() 方法。在客戶端代碼中,我們實例化了終結符表達式類和非終結符表達式類,并使用它們來構建復雜的規(guī)則。最后,我們使用上下文類來存儲需要解釋的語句,并通過調用表達式對象的 interpret() 方法來解釋語句。

解釋器模式的使用

<?php
$context = new Context("Hello, World!");
$terminal1 = new TerminalExpression("Hello");
$terminal2 = new TerminalExpression("World");
$orExpression = new OrExpression($terminal1, $terminal2);
$andExpression = new AndExpression($terminal1, $terminal2);
echo $orExpression->interpret($context->getContext()) ? "True\n" : "False\n";
echo $andExpression->interpret($context->getContext()) ? "True\n" : "False\n";

在上面的使用中,我們使用上下文類來存儲需要解釋的語句,并通過調用表達式對象的 interpret() 方法來解釋語句。

總結

解釋器模式是一種非常常見的行為型模式,它允許您將業(yè)務規(guī)則表示為表達式,從而可以將其與其他表達式組合起來,形成復雜的規(guī)則。在實際開發(fā)中,我們可以根據(jù)具體的需求,選擇不同的表達式對象來實現(xiàn)對系統(tǒng)的優(yōu)化。

到此這篇關于PHP設計模式之解釋器模式淺析的文章就介紹到這了,更多相關PHP解釋器模式內容請搜索以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持!

標簽: PHP
主站蜘蛛池模板: 诸城网站建设-网络推广-网站优化-阿里巴巴托管-诸城恒泰互联 | 家用净水器代理批发加盟_净水机招商代理_全屋净水器定制品牌_【劳伦斯官网】 | 压力喷雾干燥机,喷雾干燥设备,柱塞隔膜泵-无锡市闻华干燥设备有限公司 | 翻斗式矿车|固定式矿车|曲轨侧卸式矿车|梭式矿车|矿车配件-山东卓力矿车生产厂家 | 耐力板-PC阳光板-PC板-PC耐力板 - 嘉兴赢创实业有限公司 | 青岛成人高考_山东成考报名网| 深圳离婚律师咨询「在线免费」华荣深圳婚姻律师事务所专办离婚纠纷案件 | 数控车床-立式加工中心-多功能机床-小型车床-山东临沂金星机床有限公司 | 滑板场地施工_极限运动场地设计_滑板公园建造_盐城天人极限运动场地建设有限公司 | 多物理场仿真软件_电磁仿真软件_EDA多物理场仿真软件 - 裕兴木兰 | 订做不锈钢_不锈钢定做加工厂_不锈钢非标定制-重庆侨峰金属加工厂 | 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 - 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 | 高柔性拖链电缆-聚氨酯卷筒电缆-柔性屏蔽电缆厂家-玖泰电缆 | 一体化净水器_一体化净水设备_一体化水处理设备-江苏旭浩鑫环保科技有限公司 | 杜甫仪器官网|实验室平行反应器|升降水浴锅|台式低温循环泵 | 硅PU球场、篮球场地面施工「水性、环保、弹性」硅PU材料生产厂家-广东中星体育公司 | 工业冷却塔维修厂家_方形不锈钢工业凉水塔维修改造方案-广东康明节能空调有限公司 | 锯边机,自动锯边机,双面涂胶机-建业顺达机械有限公司 | 广州食堂承包_广州团餐配送_广州堂食餐饮服务公司 - 旺记餐饮 | 高空重型升降平台_高空液压举升平台_高空作业平台_移动式升降机-河南华鹰机械设备有限公司 | 超声波焊接机,振动摩擦焊接机,激光塑料焊接机,超声波焊接模具工装-德召尼克(常州)焊接科技有限公司 | 除甲醛公司-甲醛检测治理-杭州创绿家环保科技有限公司-室内空气净化十大品牌 | 西安文都考研官网_西安考研辅导班_考研培训机构_西安在职考研培训 | 自动售货机_无人售货机_专业的自动售货机运营商_免费投放售货机-广州富宏主官网 | 百度关键词优化_网站优化_SEO价格 - 云无限好排名 | EFM 022静电场测试仪-套帽式风量计-静电平板监测器-上海民仪电子有限公司 | 全自动端子机|刺破式端子压接机|全自动双头沾锡机|全自动插胶壳端子机-东莞市傅氏兄弟机械设备有限公司 | 精准猎取科技资讯,高效阅读科技新闻_科技猎 | 山东风淋室_201/304不锈钢风淋室净化设备厂家-盛之源风淋室厂家 翻斗式矿车|固定式矿车|曲轨侧卸式矿车|梭式矿车|矿车配件-山东卓力矿车生产厂家 | 书法培训-高考书法艺考培训班-山东艺霖书法培训凭实力挺进央美 | 企小优-企业数字化转型服务商_网络推广_网络推广公司 | 尼龙PA610树脂,尼龙PA612树脂,尼龙PA1010树脂,透明尼龙-谷骐科技【官网】 | 香港新时代国际美容美发化妆美甲培训学校-26年培训经验,值得信赖! | 高压绝缘垫-红色配电房绝缘垫-绿色高压绝缘地毯-上海苏海电气 | 砂石生产线_石料生产线设备_制砂生产线设备价格_生产厂家-河南中誉鼎力智能装备有限公司 | 拉伸膜,PE缠绕膜,打包带,封箱胶带,包装膜厂家-东莞宏展包装 | 济南律师,济南法律咨询,山东法律顾问-山东沃德律师事务所 | 网络推广公司_网络营销方案策划_企业网络推广外包平台-上海澜推网络 | 山东螺杆空压机,烟台空压机,烟台开山空压机-烟台开山机电设备有限公司 | 卫生型双针压力表-高温防腐差压表-安徽康泰电气有限公司 | 淘剧影院_海量最新电视剧,免费高清电影随心观看 |