1

我有一个返回缓存系统类(伪代码)的工厂方法类:

class CacheFactory
{
    public static function get($type) {
        switch ($type) {
            case 'memcache': 
                return new Memcache();
            case 'redis': 
                return new Redis();
            case 'default': 
                return new Void();
        }
    }
}

缓存类实现了简单的 get() 和 set() 方法(它使用定义通用方法的抽象类),这使我可以在需要时轻松切换缓存系统。正常使用会是这样的:

$cache = CacheFactory::get('redis');
$value = $cache->get('key');
...etc

我想有一个设置来启用/禁用缓存,但我不想在代码中添加条件,询问是否在任何地方都启用了缓存。所以我想返回一个实现抽象类方法的 Void() 对象,以便在禁用缓存时使用它,该类将如下所示:

class Void extends ACache
{
    public function get(){};
    public function set(){};
}

这是一个好方法吗?您认为如何在不在实际实现中添加条件的情况下处理启用/禁用设置的最佳方式?

谢谢!

4

0 回答 0