博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP 设计模式 笔记与总结(8)策略模式
阅读量:5783 次
发布时间:2019-06-18

本文共 1057 字,大约阅读时间需要 3 分钟。

① 策略模式,将一组特定的行为和算法封装成类,以适应某些特定的上下文环境,这种模式就是策略模式。

② 实际应用举例,假如一个电商网站系统,针对男性女性用户要各自跳转到不同的商品类目,并且所有广告位展示不同的广告。

 

在 Common 目录下新建 UserStrategy.php,定义接口:

在 Common 目录下新建 FemaleUserStrategy.php ,女性用户的策略实现:

 

在 Common 目录下新建 MaleUserStrategy.php ,男性用户的策略实现:  

 

入口文件 index.php:

strategy->showAd(); echo '
Category:'; $this->strategy->showCategory(); } //用于外部设置策略 function setStrategy(\Common\UserStrategy $strategy){ $this->strategy = $strategy; }}$page = new Page();if(isset($_GET['female'])){ $strategy = new \Common\FemaleUserStrategy();}else{ $strategy = new \Common\MaleUserStrategy();}$page->setStrategy($strategy);$page->index();

访问 http://127.0.0.17/php/design/psr0/index.php?female

输出:

AD:2015春夏新款女装Category:女装

访问 http://127.0.0.17/php/design/psr0/index.php

输出:

AD:Apple WatchCategory:电子产品

 

【策略模式的控制反转】

③ 使用策略模式可以实现 Ioc,依赖倒置、控制反转

在上例中 Page 类 依赖于 MaleUserStrategy 类和 FemaleUserStrategy 类。在 Page 类中不需要实现这两个类,在执行的过程中,才将这个关系进行绑定。

 

==

如果两个类是互相依赖的关系,那么它们之间就是一个紧耦合的设计,不利于替换其中某一个环节;而策略模式使用依赖倒置以后,就可以很方便地替换其中某一个类。

转载地址:http://hscyx.baihongyu.com/

你可能感兴趣的文章
20180702搭建青岛RAC记录
查看>>
安装部署TIDB分布式数据库
查看>>
Spring Security OAuth 实现OAuth 2.0 授权
查看>>
linux文件及简单命令学习
查看>>
dubbo源码分析-架构
查看>>
新 Terraform 提供商: Oracle OCI, Brightbox, RightScale
查看>>
6套毕业设计PPT模板拯救你的毕业答辩
查看>>
IT兄弟连 JavaWeb教程 JSP与Servlet的联系
查看>>
Windows phone 8 学习笔记
查看>>
linux并发连接数:Linux下高并发socket最大连接数所受的各种限制
查看>>
洛谷——P2176 [USACO14FEB]路障Roadblock
查看>>
详解区块链中EOS的作用。
查看>>
我的友情链接
查看>>
mysql-error 1236
查看>>
sshd_config设置参数笔记
查看>>
循序渐进Docker(一)docker简介、安装及docker image管理
查看>>
jsp页面修改后浏览器中不生效
查看>>
大恶人吉日嘎拉之走火入魔闭门造车之.NET疯狂架构经验分享系列之(四)高效的后台权限判断处理...
查看>>
Oracle HRMS,PeopleSoft HR,SAP HR区别
查看>>
信号量实现进程同步
查看>>