php 策略模式工厂模式区别(PHP设计模式之策略模式原理与用法实例分析)
类别:编程学习 浏览量:241
时间:2022-03-30 20:42:30 php 策略模式工厂模式区别
PHP设计模式之策略模式原理与用法实例分析本文实例讲述了PHP设计模式之策略模式原理与用法。分享给大家供大家参考,具体如下:
策略模式(Strategy Pattern)
策略模式是对象的行为模式,用意是对一组算法的封装。动态的选择需要的算法并使用。
策略模式指的是程序中涉及决策控制的一种模式。策略模式功能非常强大,因为这个设计模式本身的核心思想就是面向对象编程的多形性思想。
策略模式的三个角色:
1. 抽象策略角色
2. 具体策略角色
3. 环境角色(对抽象策略角色的引用)
实现步骤:
1. 定义抽象角色类(定义好各个实现的共同抽象方法)
2. 定义具体策略类(具体实现父类的共同方法)
3. 定义环境角色类(私有化申明抽象角色变量,重载构造方法,执行抽象方法)
策略模式的代码实例:
|
<?php abstract class baseAgent { //抽象策略类 abstract function PrintPage(); } //用于客户端是IE时调用的类(环境角色) class ieAgent extends baseAgent { function PrintPage() { return 'IE' ; } } //用于客户端不是IE时调用的类(环境角色) class otherAgent extends baseAgent { function PrintPage() { return 'not IE' ; } } class Browser { //具体策略角色 public function call( $object ) { return $object ->PrintPage (); } } $bro = new Browser (); echo $bro ->call ( new ieAgent () ); ?> |
运行结果:
IE
就在编程领域之外,有许多例子是关于策略模式的。例如:
如果我需要在早晨从家里出发去上班,我可以有几个策略考虑:我可以乘坐地铁,乘坐公交车,走路或其它的途径。每个策略可以得到相同的结果,但是使用了不同的资源。
希望本文所述对大家PHP程序设计有所帮助。
原文链接:https://blog.csdn.net/qq_23864697/article/details/79571864
您可能感兴趣
- phpStudy启动失败时的解决方法 提示缺vc9运行库(phpStudy启动失败时的解决方法 提示缺vc9运行库)
- python微信红包分配(PHP切割整数工具类似微信红包金额分配的思路详解)
- php在已有目录下创建文件(php写入文件不覆盖的实例讲解)
- dedecms验证码识别(dedecms 软件下载频道防盗链php代码)
- vuephp后台开发框架(Vue+thinkphp5.1+axios实现文件上传)
- phpredis高级用法(PHP Redis扩展无法加载的问题解决方法)
- php的流程控制语句(php基于 swoole 实现的异步处理任务功能示例)
- phpstorm 菜单如何添加和修改(phpstorm 配置xdebug的示例代码)
- php获取网页内容的几种方法(PHP实现的文件浏览器功能简单示例)
- php 获取证书列表(用PHP做了一个领取优惠券活动的示例代码)
- 解释php中可变变量并举例说明(PHP Primary script unknown 解决方法总结)
- php静态类和动态类的区别(PHP Trait代码复用类与多继承实现方法详解)
- php依赖注入对象注册(php依赖注入知识点详解)
- php脚本通过文件路径批量上传文件(php遍历目录下文件并按修改时间排序操作示例)
- php添加数据到mysql数据库(PHP通过代码连接XAMPP数据库及MySQL数据库方法)
- php 实例代码解析(PHP反射学习入门示例)
- 泰国旅游攻略(泰国旅游攻略必去景点)
- 越难春卷(越难春卷皮怎么用)
- 休闲VS新古典 办公家居简约设计(办公家居简约设计)
- 15个新成 园 位置公布 深圳龙岗2022年共建花园建设又有大动作(15个新成园位置公布)
- 记者手记 书记带我去 巡街(记者手记书记带我去)
- 富士胶片集团将向土耳其东南部地震灾民捐赠5000万日元 | 美通社(富士胶片集团将向土耳其东南部地震灾民捐赠5000万日元)
热门推荐
- dede调用栏目路径(dede栏目列表首页与第一页链接出现重复的解决办法)
- php wamp 环境搭建(wamp服务器访问php非常缓慢的解决过程)
- 微信小程序通知验证签名方法(微信小程序实现电子签名)
- scrapy框架爬取小说的正文内容(Scrapy框架爬取Boss直聘网Python职位信息的源码)
- threejs 三维可视化(three.js模拟实现太阳系行星体系功能)
- css的4个基础选择器(详解css常用选择器)
- docker进入mysql查看路径(Docker 环境运行 Mysql 和开启 Binlog 配置主从同步的设置方法)
- vue和springboot实战项目(vue+spring boot实现校验码功能)
- python中的多线程详解(python多线程抽象编程模型详解)
- 纯css和js有什么区别(CSS语法与JSON、JS对象区别比较)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9