PHP设计模式之策略模式

PHP设计模式系列(一):策略模式 策略模式策略模式作为一种软件设计模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。比如每个人都要“交个人所得税”,但是“在美国交个人所得税”和“在中国交个人所得税”就有不同的算税方法。组成 抽象策略角色:策略类,通常由一个接口或者抽象类实现。 具体策略角色:包装了相关的算法和行为。 环境角色:持有一个策略类的引用,最终给客户端调用。 实现结构图步骤 定义抽象角色类(定义好各个实现的 阅读详情

策略模式(Strategy Pattern):定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。策略模式让算法独立于使用它的客户而变化,也称为政策模式(Policy)。

策略模式包含的角色如下:

Context: 环境类
Strategy: 抽象策略类
ConcreteStrategy: 具体策略类


支付的策略选择

<?php
    abstract class zhifu { //抽象策略类
        abstract function pay();
    }

    //微信环境类
    class wx extends zhifu { 
        function pay(){
	   return 'wx ok';
	}
    }

    //支付宝环境类
    class zfb extends zhifu { 
        function pay(){
	   return 'zfb ok';
	}
    }
<?php
//引入对应的支付的类文件
required_once ("")
    //具体策略类
    class Charge {
	//放入支付类的实例
	private $charge_obj;

    	public function choose($type)
    	{
        	if ($type == 'zfb') {
			//可以进行判断对应的实例是否还存在,不在再实例,即引入注册树
            		$this->charge_obj = new zfb;
        	} elseif ($type == 'wx') {

            		$this->charge_obj = new wx;
        	} else {
            		$this->charge_obj = null;
        	}
    	}

    	public function pay()
    	{
        	if (is_null($this->charge_obj)) {
            		exit('初始化错误');
        	}
        	$this->charge_obj->pay();
    	}
    }
<?php
//引入策略类文件
required_once ("")

// 获取用户选择的支付方式
$type = trim($_GET['type']);

$Charge = new Charge();

// 初始化支付实例
$Charge->choose($type);

// 调用功能
$Charge->pay();

 

PHP mysqli_stmt_init() 详解:预处理语句初始化的原理与实战 在 PHP 后端开发中,数据库访问是核心环节,而预处理语句是保障安全与效率的关键技术。通过预编译 SQL 模板并分离参数传递,不仅能有效防止 SQL 注入,还能显著提升重复查询或批量写入的性能。理解预处理语句的完整生命周期,包括对象初始化、模板准备、参数绑定、执行与结果获取,是构建稳定数据访问层的基石。其中,`mysqli_stmt_init()` 作为初始化阶段的关键函数,负责创建空的语句对象,为后续精细控制提供基础。它尤其适用于动态 SQL 构建、事务处理以及数据访问层封装等复杂场景,帮助开发者实现更清 阅读详情

相关推荐

告别偏移地址!用C# S7PLUS驱动读写西门子S7-1500符号地址(TIA Portal V17+环境配置)

本文详细介绍了如何在TIA Portal V17+环境中使用C# S7PLUS驱动读写西门子S7-1500 PLC的符号地址,告别传统的偏移地址方式。通过配置OpenSSL、集成S7PLUS驱动库,以及实战案例展示符号地址的读写方法,显著提升代码可读性和维护效率。文章还涵盖了环境准备、高级配置及常见问题解决方案,助力工业自动化开发者实现更高效的PLC通讯。

weixin_28720767的博客 315

php设计模式:策略模式的实际应用(微信支付,支付宝支付等)

//策略模式 interface ChargeStrategy{ public function charge();}//OK,抽象策略类就完成了// 支付宝策略类class AliCharge implements ChargeStrategy{ public function charge() { // 完成支付宝的相关逻辑 }} // 微信策略类cla...

weixin_30594001的博客 332

OpenClaw记忆插件升级实战:从memory-lancedb-pro安装到AgentSkill封装

向量数据库作为现代AI应用的核心基础设施,通过将非结构化数据转换为高维向量并利用相似度检索实现语义理解。其原理基于嵌入模型生成向量表示,结合近似最近邻搜索算法实现高效查询。这项技术为智能体系统提供了长期记忆和上下文感知能力,显著提升了对话连贯性与任务执行效率。在AI智能体开发领域,向量数据库常用于知识库构建、对话历史管理和个性化推荐等场景。本文聚焦OpenClaw框架中memory-lancedb-pro插件的部署实践,针对**插件加载顺序**和**Apache Arrow依赖**两大常见痛点,通过封装成可

weixin_42525482的博客 638

5. php设计模式:策略模式的实际应用

原文地址 最近写了一个集成各家支付的开源项目(支付宝与微信)。项目地址。让调用支付变得更加简单、统一。目前已经在公司商城推行使用,上海一米市集也采用了这个支付集成项目。我可不是打广告哦,只是为了让大家可以有一个只管的了解渠道。可以去看看。今天主要聊的不是支付,而是说说其中使用的一个设计模式:策略模式。策略模式的定义解析 策略模式(Strategy Pattern):定义一系列算法,将每一个算法封

大愚Talk 3119

Realsense D435i运行ORB-SLAM3

【代码】Realsense D435i运行ORB-SLAM3。

MAX_Hope的博客 2563

STM32 Nucleo-144开发板开箱bring-up

最近做项目,用到STM32F446ZET6这款MCU,为了赶进度,前期软件需要提前开发,于是在某宝买了对应主控的官方开发板,为了避免遗忘,后面能翻出来回忆一些细节,就形成了本篇的主要内容,同时也希望能够帮助刚上手的小伙伴少走弯路,如果对你有帮助请点赞、收藏、转发,谢谢!

汽车电子软件领域知识分享 2677

Aha!设计模式(44)-适配器(1)

意图   将一个类的接口转换成客户希望的另外一个接口。 Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 适配器这个名称非常好,读者可以考虑电源插头转换器,接下来我们会不断地重复这个类比。   动机   有时,为复用而设计的工具箱类不能够被复用的原因仅仅是因为它的接口与专业应用领域所需要的接口不匹配。   提供一个可以复用的类库或者函数库一般来讲并不是...

面向对象思考 576

使用MATLAB进行灰色预测 GM(1,1)

使用MATLAB进行灰色预测 GM(1,1)

Hou_____的博客 997

设计模式二 策略模式

策略模式定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化不会影响到使用算法的客户。(参考大话设计模式)

aa1059258042的专栏 362

pytorch实现基本的logistic和softmax回归实验(手动+torch)

前提:不是前馈神经网络,没有隐藏层。 一:Logistic回归实验–人工构造数据集,手动构造模型 要求: 动手从0实现logistic回归,实现二分类,人工构造数据集,并分析loss、训练集、测试集的准确率。(要求从零实现二元交叉熵) 实验过程: 1.1人工构造数据集 1. # #自定义数据---训练集 2. num_inputs = 2 3. n_data = torch.ones(1500, num_inputs) # 数据的基本形态 4. x1 = torch.normal(2 * n_d

qq_37534947的博客 1万+

AI 测试工程师 — 6 个月学习计划表

AI 转型测试工程师 —— 6 个月学习计划表

weixin_46453070的博客 1068

设计模式(三)策略模式

在学习策略模式之前我们先回顾一下之前简单工厂模式中介绍的简单计算器的实现,首先我们创建了一个父类Operation,拥有两个父类属性num1和num2,还有一个父类方法getResult(),接着我们创建四个实现类通过重写getResult()方法分别实现的加减乘除的操作,然后我们需要一个工厂类OperationFactory来管理生产我们实际会使用到的对象,最后在客户端方法中,我们通过不同的op...

anthony_ll的博客 241

数字滤波器应用介绍

线性滤波器FIR ,会引起恒定延迟,通过补零的方式补偿非线性滤波器IIR,会引起频率相关的延迟,通过零相位延迟filtfilt补偿从信号中去除不需要的频谱时,通过滤波和补偿实现。如果需要去除的频率与采样率相差甚远,比如4kHz 与100Hz, 可通过 低通滤波->补偿->降采样–> 滤波 补偿 -->上采样还原的方法。*降采样前一定要先低通滤波为了防止混叠。

weixin_39107270的博客 274

php23种设计模式-策略模式(1)

php设计模式-单例模式(1) 提示:本系列将用实际业务场景带你理解设计模式,用简单粗暴的语言讲解,拒绝照本宣科 文章目录php设计模式-单例模式(1)单例模式官方解释:一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 单例模式 官方解释: 提示:以下是本篇文章正文内容,下面案例可供参考 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代码如下(示例): import numpy as np i

特别剑的博客 716

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

php设计模式之策略模式

1.定义:将一组特定的行为和算法封装成类,以适应某些特定的上下文环境 2. 使用策略模式可以实现ioc,依赖倒置,控制反转<?php /** * * @authors mtg * @date 2015-08-07 15:00:54 *//** * 策略接口类:具体策略类需要实现其中的方法 */ interface Eat{ public function eat(); }

ma199385的博客 551

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

php 设计模式 策略模式

在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。 以出行方式为例,可以选汽车和公交 <?php interface Trip{ public function out(); } class Car implements Trip{ public function out(){ echo '坐汽车出门'; } } class Bus implements Trip{ ..

渡目成书 249

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

PHP讲解设计模式:策略模式

首先,定义一个Strategy接口,所有具体的策略类都实现了这个接口。Strategy接口定义了execute方法,用于执行特定的算法。php// Strategy 接口// ConcreteStrategyA 类表示具体的策略 A// ConcreteStrategyB 类表示具体的策略 B?在这个例子中,Strategy接口定义了execute方法,所有具体的策略类都实现了这个接口。和类分别表示具体的策略 A 和策略 B,并在execute方法中实现了特定的算法。接下来,定义一个。

软件架构师笔记 1211

php7进阶到架构,php常用设计模式之策略模式

目录概述策略模式含义策略模式的三种角色策略模式实现步骤策略模式设计代码实现php7进阶到架构师相关阅读概述这是关于php进阶到架构之php7核心技术与实战学习的系列课程:php常用设计模式之策略模式学习目标:掌握策略模式的含义掌握策略模式设计实现举一反三实际开发中应用设计模式策略模式含义策略模式指的是程序中涉及决策控制的一种模式,是一组算法的封装,动态选择需要的算法并使用。策略模式的三种角色抽象策...

weixin_36068796的博客 148

Php设计模式之【策略模式Strategy Pattern】

【案例】 黑枣游戏公司开发小鸡快跑的游戏,小鸡从鸡窝开跑,狂奔100米后到达安全地带。这500米中,小鸡可以使用辅助工具,不限于鸡爪、滑板、自行车、火箭运输。 【分析OOA】 小鸡快跑游戏是使用策略模式的一个典型实例,我们分析一下小鸡快跑游戏的特征 1. 定义了一系列的算法。小鸡的狂奔包括鸡爪、滑板、自行车、火箭运输多个方式。 2. 这些算法有相同的结果或实现,它们还可以相互替换。无论使

MMMMM 1232

设计模式之策略模式(php实现)

github地址:https://github.com/ZQCard/design_pattern   /** * 在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。 * 在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象...

diaoliu7156的博客 198

PHP设计模式(三)-策略模式

layout: post title: "PHP设计模式(三)-策略模式" date: 2016-06-06 10:32:22 +0800 comments: true categories: [php] 在之前学习了PHP设计模式中的工厂模式,单例模式,注册树模式,适配器模式。今天来学习一下策略模式。 一、策略模式概念 策略模式针对一组算法,将每一个算法封装到具有共同接口的独立的类中,...

EwanRenton 305

PHP设计模式之——策略模式

策略模式(Strategy Pattern)是对象的行为模式,是对一组算法的抽象封装,动态的选择算法使用。在我们的日常生活中,策略模式体现在方方面面:早上起床我去公司,可以坐公交,可以坐出租车,也可以步行,最终的目的都是到达公司,但是却使用了不同的资源。 策略模式的三个角色: 抽象策略角色具体策略角色环境角色(对抽象策略角色的引用) 策略模式的实现步骤: 定义抽象角色(

一个手艺人 718
上一篇: PHP设计模式之适配器模式
下一篇: 记一次活动分享,用JSSDK.php,显示指定图片和文本
root_admin_12138
博客等级 码龄9年 12粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值