工厂模式:根据用户需求,动态生成类的实例

原创 2018-11-09 22:18:07 26
摘要:工厂模式:根据用户需求,动态生成类的实例,避免过于依赖其他的类;类的高度耦合,一旦依赖的类发生改变时,其它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();

备注:工厂模式没有依赖注入模式好用。

发布手记

热门词条