0

如果我在 PHP 5.x 中执行此操作(通常是伪代码):

class object{
    __construct($id){
       <<perform database query>>
    }
}

$array(1) = new object(1);
$array(1) = new object(1);

我是否在浪费精力(内存、cpu 等)?数据库查询会运行两次吗?

避免这种情况的最佳方法是什么(如果这是一个问题)?使用$array(1) instanceof object? isset($array(1))? array_key_exists(1, $array)?

有没有一种(好的?)方法可以在类再次完成所有工作之前检查它是否已经存在?


编辑:为了清楚起见,我不需要这个对象两次。这个对象将被再次使用$array(523) = new object(523);我的主要问题是如何最好地避免冗余创建完全相同的对象。

4

1 回答 1

3

如果您想避免创建多个对象,您有几个选择。能想到的有...

  1. 创建一次对象并确保将其传递到需要的位置。这意味着您必须检查代码中与该对象相关的依赖关系。

  2. 使用对象工厂来构造对象,它可以返回对该对象的引用,而不是创建一个新的引用,如果它已经创建的话。

  3. 实现单例模式。

与其他所有事情一样,需要权衡取舍,因此请检查您的情况并决定最适合您的情况。

于 2012-12-12T17:34:04.187 回答