文档章节

PHP设计模式之策略模式

别人说我名字很长
 别人说我名字很长
发布于 2016/02/12 15:50
字数 277
阅读 27
收藏 1
<?php

namespace Tools;

/*
策略模式
将一组特定的行为和算法封装成类,以适应某些特定的上下文环境,这种模式就是策略模式
策略模式定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
*/

//定义一个策略接口
interface userStrategy{
	function showAd(); //广告展示
	function showCategory();//类目展示
}

//男性用户策略
class MaleUserStrategy implements userStrategy{

	function  showAd(){
		echo "男性用户广告展示";
	}

	function showCategory()
	{
		echo "男性用户类目展示";
	}
}

//女性用户策略
class FemaleUserStrategy implements userStrategy{

	function  showAd(){
		echo "女性用户广告展示";
	}

	function  showCategory(){
		echo "女性用户类目展示";
	}

}

//策略模式使用
class page{

	protected $startegy;

	//注入策略(只要实现了userstrategy接口的都是可注入的策略)
	function setStrategy(\Tools\userStrategy $strategy){
		$this->startegy = $strategy;
	}

	//显示
	function  show(){
		$this->startegy->showAd();
		echo "<br>";
		$this->startegy->showCategory();
	}

}


//根据参数展示不同的显示策略
$p = new \Tools\page();
if(isset($_GET["female"])){
	$strategy = new \Tools\FemaleUserStrategy();
}else{
	$strategy = new \Tools\MaleUserStrategy();
}
//注入策略
$p->setStrategy($strategy);
$p->show();



© 著作权归作者所有

共有 人打赏支持
别人说我名字很长
粉丝 55
博文 255
码字总数 105359
作品 0
济南
程序员
私信 提问
《PHP设计模式大全》系列分享专栏

《PHP设计模式大全》已整理成PDF文档,点击可直接下载至本地查阅 https://www.webfalse.com/read/201739.html 文章 php设计模式介绍之编程惯用法第1/3页 php设计模式介绍之值对象模式第1/5页...

kaixin_code
11/06
0
0
PHP设计模式(一):简介及创建型模式

我们分三篇文章来总结一下设计模式在PHP中的应用,这是第一篇创建型模式。 一、设计模式简介 首先我们来认识一下什么是设计模式: 设计模式是一套被反复使用、容易被他人理解的、可靠的代码设...

juhenj
2014/05/15
228
2
【设计模式笔记】(十六)- 代理模式

一、简述 代理模式(Proxy Pattern),为其他对象提供一个代理,并由代理对象控制原有对象的引用;也称为委托模式。 其实代理模式无论是在日常开发还是设计模式中,基本随处可见,中介者模式中...

MrTrying
06/24
0
0
设计模式已经陨落了?

你现在是坐在一个程序员旁边吗?如果是的话,那么在你读下面的段落之前,有一个简单的实验。让他们到一边去,问问他们两个问题并记录下答案。首先问他们“什么是设计模式?”然后再问“说出你...

oschina
2014/03/11
9.1K
69
设计模式梳理(一)

设计模式梳理(一) 总体来说设计模式分为三大类: @案例源码地址:https://gitlab.com/lxqxsyu/DisgnPattern 创建型模式 简单工厂模式 工厂类是整个模式的关键。它包含必要的判断逻辑,能够...

lxq_xsyu
2017/11/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

深入解析JSON与XML优缺点对比

本文从各个方面向大家对比展示了json和xml的优缺点,十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎批评指正。 #1. 定义介绍 1.1 XML定义 扩展标...

前端攻城老湿
9分钟前
0
0
Vue 单页应用(spa)前端路由实现原理

一文搞懂单页应用原理Vue项目History模式路由机制 源码分析VueVueRouter Vue 单页应用(spa)前端路由实现原理 写在前面:通常 SPA 中前端路由有2种实现方式: window.history location.hash...

前端攻城小牛
11分钟前
0
0
Vuex的初探与实战小结

1.概述 每一个 Vuex 应用的核心就是 store(仓库)。“store”基本上就是一个容器,它包含着你的应用中大部分的状态 (state)。 Vuex 和单纯的全局对象有以下两点不同: 1.Vuex 的状态存储是响...

peakedness丶
13分钟前
0
0
CSS 背景图片全屏显示

<style> html { background: url(./static/login/xia.jpg) no-repeat center center fixed; -webkit-background-size: cover; -moz-background-size: cover; ......

SummerGao
16分钟前
0
0
Supplier函数式接口

Supplier接口的不传入参数,返回一个值。真是一个无私奉献的接口,还没有default方法。 下面就想用一个接口试试,其实我本来用的是IntSupplier,但是发现在使用方法引用的时候,不好把Math....

woshixin
30分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部