「这是我参与11月更文挑战的第18天,活动详情查看:2021最后一次更文挑战」
课程背景
- 最近完成一个项目 对于代码分层有了一丢丢了解 但是架构设计合理性上存在问题
万物看本质基本功硬 底层知识扎实才能写出更优质的代码 才能走得更远- 作为努力奔跑的程序员 又一次的去温习 思考 设计模式等基础的php知识
- 因为掘金粑粑有奖励,所以把学习的笔记整理记录并分享了出来。
正文开始
上面介绍了一些php的基础知识,这里开始正式介绍一些设计模式。
工厂模式
工厂模式是类比现在的工厂一样,批量的生产类,先看下面的代码。
$db = new \Liiy\Db();
var_dump($db);
当我们用new关键字创建一个类的时候,每次new都会创建一个新的对象,而且每次都需要写类名。
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层提取也是这个思想,任何一个数据操作必须只能有一个出口,这样如果需要修改则修改这个接口即可。但是如果某一个数据操作有多个出口,那么修改会是非常头疼的一件事情。