它是如何完成的?当您无法控制实例化和用法时依赖注入
我有一个Model类是许多子类的父类,并且该模型依赖于数据库连接和缓存机制。
现在,它开始变得麻烦:我无法控制每个对象如何被实例化或使用,但是我控制了子类使用的方法。
目前我已转向使用静态方法和依赖注入的性质,因此:
class Model { private static $database_adapter; private static $cache_adapter; public static function setDatabaseAdapter(IDatabaseAdapter $databaseAdapter) { self::$databaseAdapter = $databaseAdapter; } public static function setCacheAdapter(ICacheAdapter $cacheAdapter) { self::$cacheAdapter = $cacheAdapter; } }
而一直都很顺利,但感觉脏(它所有型号创建一个全局状态)。我已经考虑了工厂模式,但是从子类中去除了对实例化的控制(我如何在它的构造函数中实例化一个具有可变数量参数的对象?)。
现在我不知所措。任何帮助,将不胜感激。