PHP 设计模式十四数据对象映射模式

258 阅读2分钟

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

课程背景

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

正文开始

上一节中我们指出创建对象造成的浪费,这里我们继续进行整理。工厂模式中加入注册树模式。 4 index方法中定义方法

image.png 多次调用工厂方法创建对象多创建一次对象,造成资源浪费。所以我们在工厂方法中会使用注册树模式修改具体实现。

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创建对象的时候,实例上是产生了两个不相同的实例对象。也就是多了一次创建同一对象,而且涉及到数据库链接。造成资源的浪费。 image.png

第二次创建中,我们在工厂模式中,引入了注册树模式。注册树就类似一个缓存一样。创建过的对象就会保存起来。用的时候可以直接拿过来使用。这就省去了第二次数据库链接的创建。 image.png