单身,工厂,自动装载机

时间:2012-03-12 16:38:15

标签: php singleton design-patterns factory-pattern spl-autoloader

如果使用自动加载器功能(使用spl_autoload_register),是否还需要:

  • singleton:所有需要的类都将由自动加载器加载,包括数据库,日志,r& r,前端等。所以需要“永远在线”等对象我不清楚
  • factory:再次,autoloader将加载所需的类,所以是否有一点使用工厂类来实例化实现接口的工作类,或者扩展抽象类

1 个答案:

答案 0 :(得分:1)

单例用于保存特定类的单个实例,因此无论何时检索实例,它都将始终相同。因此,设置数据意味着在检索数据时数据始终相同。

这与自动加载类不同,因为每次创建新实例时,都会将状态重置为类的默认值。不过,单身人士应该谨慎使用,因为它们本质上是美化的全球变量。

应使用工厂模式来委派对象的确定和创建。当您不想指定具体类但在一组条件下需要某个子类时使用它。你不能将构造参数传递给自动加载器,并且可能需要一些复杂的逻辑来确定应该从工厂返回哪个对象,所以它再次没有达到同样的效果。

自动加载器应该只用于查找类文件并包含它。它不应该(也不能)执行任何逻辑,例如实例化对象或决定加载哪个对象。