我知道单例模式不好,因为它使用全局状态。但是在大多数应用程序中,您需要一个类的单个实例,例如数据库连接。 所以我设计了我的数据库对象,但没有使用单例模式,但我只实例化了一次。
我的问题是,我怎样才能在低级类(对象图中的深处)中访问我的对象而不将它传递到所有地方?
假设我有一个应用程序 Controller ,它实例化(要求工厂实际实例化它)一个页面 Controller ,它实例化一个需要数据库对象的用户模型。
我的应用程序 Controller 和页面 Controller 都不需要知道数据库对象,但 User 类需要。我应该如何将对象传递给它?
感谢您的宝贵时间!
最佳答案
考虑使用全局容器:
- 您注册确实与应用程序的多个子系统相关的对象。
- 然后您请求容器那些对象。
这种方法在依赖注入(inject)框架中非常流行(参见 Symfony DI、Yadif)。
关于php - 如何在不使用全局状态的情况下访问我的单例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3326722/