设计模式(二)之策略模式
1.策略模式:是对象的行为模式,用意是对一组算法的封装。动态的选择需要的算法并使用。
实现步骤:
1.定义抽象类(定义所有子类必须要实现的共同抽象方法)
2.定义具体策略类(具体实现父类的共同方法)
3.定义环境角色类(私有化申明抽象角色变量,重载构造方法,执行抽象方法)
目的;根据不同渠道实现不通的渠道接口;
比如下面的实现支付渠道相关接口;
Channel.php
<?php /*策略模式: 意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。 */ //渠道类抽象类 abstract class Channel { abstract function getChannel(); //获取渠道状态及其他属性 abstract function getChannelFee(); //获取渠道费率 abstract function getChannelConfig();//获取渠道交易秘钥等信息 } //子渠道cmbc类实现 class cmbc extends Channel { protected $name; protected $config; protected $fee; function __construct($name){ $this->name = $name; } function getChannel(){ return $this->name; } function getChannelFee(){ return $this->fee; } function getChannelConfig(){ return $this->config; } } //子渠道 alipay class alipay extends Channel { protected $name; protected $config; protected $fee; function __construct($name){ $this->name = $name; } function getChannel(){ return $this->name; } function getChannelFee(){ return $this->fee; } function getChannelConfig(){ return $this->config; } } //总路由 class RouterChannel { public $chn; public function __construct($channel){ $this->chn = $channel; } } $router = new RouterChannel(new cmbc('民生')); echo $router->chn->getChannel(); $router = new RouterChannel(new alipay('支付宝')); echo $router->chn->getChannel(); ?>
佛语:我本求心不求佛,了知三界空无物,若欲求佛但求心,只这心心心是佛
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧