「这是我参与11月更文挑战的第22天,活动详情查看:2021最后一次更文挑战」
课程背景
- 最近完成一个项目 对于代码分层有了一丢丢了解 但是架构设计合理性上存在问题
万物看本质
基本功硬 底层知识扎实才能写出更优质的代码 才能走得更远- 作为努力奔跑的程序员 又一次的去温习 思考 设计模式等基础的php知识
- 因为掘金粑粑有奖励,所以把学习的笔记整理记录并分享了出来。
正文开始
上一节中我们指出创建对象造成的浪费,这里我们继续进行整理。工厂模式中加入注册树模式。 4 index方法中定义方法
多次调用工厂方法创建对象多创建一次对象,造成资源浪费。所以我们在工厂方法中会使用注册树模式修改具体实现。
5 我们修改工厂模式中获取对象的具体实现,引入注册树操作类。
//创建对象
static function getUser($id){
$key = 'user_' . $id;
$user = Register::get($key);
if(!$user){
$user = new \Liiy\User($id);
Register::set($key,$user);
}
return $user;
}
此时我们在前端调用数据的时候,就可以直接拿取到所需的数据。
总结 在之前的调用中,我们使用工厂直接new创建对象的时候,实例上是产生了两个不相同的实例对象。也就是多了一次创建同一对象,而且涉及到数据库链接。造成资源的浪费。
第二次创建中,我们在工厂模式中,引入了注册树模式。注册树就类似一个缓存一样。创建过的对象就会保存起来。用的时候可以直接拿过来使用。这就省去了第二次数据库链接的创建。