摘要:工厂模式:根据用户需求,动态生成类的实例,避免过于依赖其他的类;类的高度耦合,一旦依赖的类发生改变时,其它new出来的也要跟着改成,所以要采用工厂模式。class Tody { public function work() {  
工厂模式:根据用户需求,动态生成类的实例,避免过于依赖其他的类;类的高度耦合,一旦依赖的类发生改变时,其它new出来的也要跟着改成,所以要采用工厂模式。
class Tody
{
public function work()
{
return '学习php';
}
}
class Mody
{
public function run()
{
return '学习mysql';
}
}
class Factory //创建工厂类
{
public static function create($className) //实例化传入的类,$className为参数名
{
switch (strtolower($className)) {// strtolower 全部转化为小写 判断传入的参数
case 'tody':
return new Tody(); //传入的是tody,则创建Tody类
break;
case 'mody':
return new Mody();
break;
}
}
}
class Student
{
public function sphp()
{
$tody = Factory::create('tody'); //传入的是tody参数,执行case“dody里的 return new Tody();”
return '今天'.$tody-> work(); //执行Tody类里面的work方法
}
public function smysql()
{
$auto = Factory::create('mody');;
return '明天'.$auto->run();
}
}
$student = new Student;
echo $student->sphp(); //执行Student类里面的sphp方法
echo '<br>';
echo $student->smysql();备注:工厂模式没有依赖注入模式好用。