php设计模式--策略模式

    策略模式就是将特定的行为封装成一个类,来适应特定的用户某些特定的情况。例如:在面向过程的开发中总是使用if...else.....这种属于硬编码的形式,当有些条件在修改的时候我们还要去调整if  else的程序 。现在就来搞一搞策略模式。

<?php
interface UserStrategy
{
    function showad();
    function showcat();
}


class Man implements UserStrategy
{
    function showad()
    {
        echo 'macbook';
    }

    function showcat()
    {
        echo 'mac_dev';
    }
}

class Woman implements UserStrategy
{
    function showad()
    {
        echo 'woman_ad';
    }
    function showcat()
    {
        echo 'woman_cat';
    }
}


class pick
{
	private $_act;
	function pickecho()
	{
		$this->_act->showcat();
		$this->_act->showad();
	}
	function setact($Strategy)
	{
		$this->_act = $Strategy;
	}
}


$pickclass = new pick();
//针对woman
$pickclass->setact(new Woman());
$pickclass->pickecho();
echo "<br/>";
//针对man
$pickclass->setact(new Man());
$pickclass->pickecho();

  

总结:

1.在代码中需要变化的地方,把它们独立出来,不要和那些不需要变化的代码混在一起;

2.针对接口编程,不针对实现编程;

3.多用组合,少用继承;

4.使用策略模式完成依赖倒置,属于解耦的过程;

posted @ 2017-09-07 16:48  ~煎饼果子~  阅读(163)  评论(0编辑  收藏  举报