【欢迎关注、分享、点赞或评论,您的一个举手之劳,便是最大的鼓励!
】
连载技能文章,关注抢先看。
码字不随意马虎,尊重版权,转载请注明出处:头条号|PHP在路上。
序言:
我们一起聊完了关于创建型的设计模式,共说了工厂模式、单例模式、原型模式和策略模式这四种,本日我们开始一起聊一聊关于行为型设计模式-策略模式。
内容概要:1、什么是策略模式
2、怎么实现策略模式
3、示例代码
4、策略模式和大略工厂模式的差异。
一、什么是策略模式单从名字上我们实在也可以理解各大概:所谓策略,便是多个预备方案,根据环境的不同,选择不同的策略(方法)。
按照我们的习气,举个例子:
我曾经接过一个搭建电商网站的活,个中有一个需求,用户首页,弹出框问顾客的性别,然后根据顾客选择的性别,在某些广告位置推举相应性别的广告产品。
这时候我们就会用到策略模式。
策略:两个,男士广告产品,女性广告产品
环境:用户输入性别
结果:选择帅哥,广告位显示男士产品;选择美女,广告位现实女士产品。
二、怎么实现策略模式先看策略模式的UML图:
我们一起来剖析一下:
1、我们须要有一个策略接口,它可以规范每一个策略须要实现的方法。
2、我们须要有个调用的类,实现两个功能,一是吸收环境参数,二是实例化策略工具。
3、客户端须要通报环境参数。
晕,这不是大略工厂模式嘛?!
别焦急,我们一会再谈论两者的差异。
三、示例代码
策略代码的实现比较长一些,我分几个地方给大家展示。
我们可以访问 http://localhost/strategy.php,得到如下结果:
最新男装
男装
这和我们预期的是一样的。不过这个代码还可以再优化一下,比如在60行开始,我们可以采取其他办法,减少ifelse的判断,增加代码的性感都雅程度。
四、策略模式和大略工厂模式的差异1、策略模式是根据工具方法来实现业务的分离。大略工厂采取的实例化工具的办法实现业务的分离。
2、工厂模式属于创建工具型的模式 ,它关注工具创建,供应创建工具的接口. 让工具的创建与详细的利用客户无关。
策略模式是工具行为型模式 ,它关注行为和算法的封装 。它定义一系列的算法,把每一个算法封装起来, 并且使它们可相互更换。使得算法可独立于利用它的客户而变革。
不过,现在不理解没事,记得这个例子,等实际运用的时候就能知道个中的差异了。
不知道是否解释白了策略模式,如果解释白了,请回答666支持我,
如果没有的话,请在评论中指出,大家一起谈论。