它是如何完成的?當您無法控制實例化和用法時依賴注入
我有一個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; } }
而一直都很順利,但感覺髒(它所有型號創建一個全局狀態)。我已經考慮了工廠模式,但是從子類中去除了對實例化的控制(我如何在它的構造函數中實例化一個具有可變數量參數的對象?)。
現在我不知所措。任何幫助,將不勝感激。