如果使用自动加载器功能(使用 spl_autoload_register),是否需要:
- 单例:无论如何,所有需要的类都将由自动加载器加载,包括数据库、日志、r&r、fronts 等。所以需要“永远在线”等对象我不清楚
- 工厂:再次,自动加载器将加载所需的类,所以有没有一点使用工厂类来实例化实现接口的工人类,或扩展抽象类
如果使用自动加载器功能(使用 spl_autoload_register),是否需要:
单例用于保存特定类的单个实例,因此无论何时检索该实例,它总是相同的。因此,设置数据将意味着检索数据时数据始终相同。
这与自动加载类不同,因为每次创建新实例时,都会将状态重置为类的默认值。不过,单例应该谨慎使用,因为它们本质上是美化的全局变量。
应该使用工厂模式来委派对象的确定和创建。当您不想指定具体类但在一组条件下需要某个子类时使用它。您不能将构造参数传递给自动加载器,并且可能需要一些复杂的逻辑来确定应该从工厂返回哪个对象,因此它也不能实现同样的事情。
自动加载器应该只用于查找类文件并包含它。它不应该(也不能)执行任何逻辑,例如实例化对象或决定加载哪个对象。