首页后端开发PHPPHP工厂方法模式怎么理解,好在哪

PHP工厂方法模式怎么理解,好在哪

时间2024-03-24 22:08:03发布访客分类PHP浏览858
导读:关于“PHP工厂方法模式怎么理解,好在哪”的知识点有一些人不是很理解,对此小编给大家总结了相关内容,文中的内容简单清晰,易于学习与理解,具有一定的参考学习价值,希望能对大家有所帮助,接下来就跟随小编一起学习一下“PHP工厂方法模式怎么理解,...
关于“PHP工厂方法模式怎么理解,好在哪”的知识点有一些人不是很理解,对此小编给大家总结了相关内容,文中的内容简单清晰,易于学习与理解,具有一定的参考学习价值,希望能对大家有所帮助,接下来就跟随小编一起学习一下“PHP工厂方法模式怎么理解,好在哪”吧。

PHP工厂方法模式的好处是:核心类只需要关注工厂类的接口,而具体的产品实例交给具体的工厂子类去创建。在该模式下,通过定义一个抽象的核心工厂类,并定义创建产品的接口,使创建具体产品实例的工作延迟到其工厂子类去完成。

本文操作环境:Windows10系统、PHP7.1版、Dell G3电脑。

php工厂方法模式的好处是什么

此模式中,通过定义一个抽象的核心工厂类,并定义创建产品对象的接口,创建具体产品实例的工作延迟到其工厂子类去完成。

这样做的好处是核心类只关注工厂类的接口定义,而具体的产品实例交给具体的工厂子类去创建。当系统需要新增一个产品,无需修改现有系统代码,只需要添加一个具体产品类和其对应的工厂子类,是系统的扩展性变得很好,符合面向对象编程的开闭原则。

?php
interface Animal{
    
  public function run();
    
  public function say();

}

class Cat implements Animal
{

  public function run(){
    
      echo "I ran slowly br>
    ";

  }

  public function say(){
    
      echo "I am Cat class br>
    ";

  }

}

class Dog implements Animal
{

  public function run(){
    
      echo "I'm running fast br>
    ";

  }

  public function say(){
    
      echo "I am Dog class br>
    ";

  }

}

abstract class Factory{
    
  abstract static function createAnimal();

}

class CatFactory extends Factory
{

  public static function createAnimal()
  {
    
      return new Cat();

  }

}

class DogFactory extends Factory
{

  public static function createAnimal()
  {
    
      return new Dog();

  }

}
    
 
$cat = CatFactory::createAnimal();
    
$cat->
    say();
    
$cat->
    run();
    
 
$dog = DogFactory::createAnimal();
    
$dog->
    say();
    
$dog->
    run();
    

  工厂方法模式是简单工厂模式的进一步抽象和推广。由于使用了面向对象的多态性,工厂方法模式保持了简单工厂模式的优点,而且克服了它的缺点。在工厂方法模式中,核心的工厂类不再负责所有产品的创建,而是将具体创建工作交给子类去做。

这个核心类仅仅负责给出具体工厂必须实现的接口,而不负责产品类被实例化这种细节,这使得工厂方法模式可以允许系统在不修改工厂角色的情况下引进新产品。


感谢各位的阅读,以上就是“PHP工厂方法模式怎么理解,好在哪”的内容了,通过以上内容的阐述,相信大家对PHP工厂方法模式怎么理解,好在哪已经有了进一步的了解,如果想要了解更多相关的内容,欢迎关注网络,网络将为大家推送更多相关知识点的文章。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: PHP工厂方法模式怎么理解,好在哪
本文地址: https://pptw.com/jishu/652349.html
@Param注解报参数取不到怎么办? oracle误删表如何将数据恢复?方法是什么?

游客 回复需填写必要信息