什么是设计模式?设计模式能做什么?用最直白话说就是设计模式是前人在项目中总结的经验,主要解决松耦合,减轻程序之间的依赖关系,模块化的方式。
废话不说上代码:
设配器模式
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 () );