策略模式总结

个人理解,策略模式就是对待同一个事件,所有不同的方案

你丢了自行车,如果你是中国人,你基本就告别自行车了,

如果你是外国人,车子很快就能找到,而且还有有关部门的人给你赔礼道歉

同一件事对待不同人的不同表现着就是一种策略


<?php
	/********************************
	*	你叫小明,你从小就立志要去解救生活在水深火热中的米国人
	*	但是你发现,到了米国之后什么都不一样了,
	*	他们说的是英语,吃饭用的是叉子,有他们的医疗,法律,教育制度等
	*	这一整套就是一个策略
	*********************************/
	interface Country{
		function newAroundHere($obj);
	}

	//这是你
	class You{
		private $name = "XiaoMing";
		public $language = "";
		public $dinnerware = "";
		//你会说话
		function say($country){
			echo "My name is $this->name and I Speaking $this->language in $country, with a $this->dinnerware to eat";
		}
	}

	class CHN implements Country{
		public $language = "Chinese";		//我们在中国说的是中文
		public $dinnerware = "Chopsticks";	//餐具是筷子

		//俗话说 When in Rome do as the Rome`s Do
		//到了这里就要把我们的风俗习惯给你加载一遍
		function newAroundHere($obj){
			foreach ($obj as $key => $value) {
				$obj->$key = $this->$key;
			}
			return $obj;
		}
	}

	//但是你拿到了绿卡,远赴重洋要完成你的使命
	class USA implements Country{
		public $language = "English";
		public $dinnerware = "Fork";

		//但是首先你要适应这里
		function newAroundHere($obj){
			foreach ($obj as $key => $value) {
				$obj->$key = $this->$key;
			}
			return $obj;
		}
	}

	$you = new You();


	$chn = new CHN();
	$chn->newAroundHere($you);
	$you->say("China");

	echo "<br/>===============================================================================================<br/>";

	$usa = new USA();
	$usa->newAroundHere($you);
	$you->say("American");


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值