什么是设计模式?设计模式能做什么?用最直白话说就是设计模式是前人在项目中总结的经验,主要解决松耦合,减轻程序之间的依赖关系,模块化的方式。

废话不说上代码:
设配器模式

interface IDatabase{
    function query($db);
}
class Mysql implements IDatabase{
    function query($db)
    {
        echo  'mysql query:'.$db;
    }
}

class Oracle implements IDatabase{
    function query($db)
    {
        echo  'oracle query:'.$db;
    }
}



$mysql = new \Common\Mysql();
$oracle = new \Common\Oracle();
$mysql->query("select * from db");
$oracle->query("select * from db");

策略模式
将一组行为和算法封装成类,适应某些上下文的关系。类似于 java 中的反转控制和注入依赖

 abstract class baseAgent { //抽象策略类
        abstract function PrintPage();
    }
//用于客户端是IE时调用的类(环境角色)
    class IeAgent extends baseAgent {
        function PrintPage() {
            return 'IE';
        }
    }
//用于客户端不是IE时调用的类(环境角色)
    class ChromeAgent extends baseAgent {
        function PrintPage() {
            return 'Chrome';
        }
    }

class Browser { //具体策略角色
        public function call($object) {
            return $object->PrintPage ();
        }
    }
    $bro = new Browser ();

//都依赖于具体策略角色,而不直接依赖于Chrome或者Ie类
if(Ie)
    echo $bro->call ( new IeAgent () );
elseif(chrome) 
    echo $bro->call ( new ChromeAgent () );


↙↙↙阅读原文可查看相关链接,并与作者交流