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

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

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

批改老师:Peter-Zhu批改时间:2018-11-09 22:40:06
老师总结:工厂模式的根本 思路是,当前对象对另一个对象的依赖,转为对一个对象工厂的依赖,尽管没有从根本上解决耦合的问题,但从依赖一个对象到依赖一个对象工厂,毕竟还是进步了,以后你会学到使用依赖注入和容器来从根本

发布手记

热门词条