PHP 设计模式六 工厂模式

194 阅读1分钟

「这是我参与11月更文挑战的第18天,活动详情查看:2021最后一次更文挑战

课程背景

  • 最近完成一个项目 对于代码分层有了一丢丢了解 但是架构设计合理性上存在问题
  • 万物看本质基本功硬 底层知识扎实才能写出更优质的代码 才能走得更远
  • 作为努力奔跑的程序员 又一次的去温习 思考 设计模式等基础的php知识
  • 因为掘金粑粑有奖励,所以把学习的笔记整理记录并分享了出来。

正文开始

上面介绍了一些php的基础知识,这里开始正式介绍一些设计模式。

工厂模式

工厂模式是类比现在的工厂一样,批量的生产类,先看下面的代码。

$db = new \Liiy\Db();
var_dump($db);

当我们用new关键字创建一个类的时候,每次new都会创建一个新的对象,而且每次都需要写类名。 image.png index.php

$db = Factory::createDb();
var_dump($db);
echo '<br>';
$db = Factory::createDb();
var_dump($db);
echo '<br>';
$db = Factory::createDb();
var_dump($db);
echo '<br>';

Factory.php文件中

<?php
namespace Liiy;

class Factory{

    public static function createDb(){
        return new Db();
    }
}
  • 工厂模式中创建一个方法,就像一个统一的接口一样,调用方法就能拿到当前的类的对象。
  • 如果不使用工厂,那到处都是new关键字创建的类,如果需要修改类名则就需要全局替换了。
  • 如果使用了工厂模式,那么只需要在统一方法中修改类名即可。

修改一处 跟修改多出效果是不同的,如果每一处都需要修改部分代码。那后期的修改会非常的复杂,各种改改改。但是如果统一修改方法的实现,那只需要修改一处即可。 Service层提取也是这个思想,任何一个数据操作必须只能有一个出口,这样如果需要修改则修改这个接口即可。但是如果某一个数据操作有多个出口,那么修改会是非常头疼的一件事情。