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