我有一个工厂方法类,它返回一个缓存系统类(伪代码):
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(){};
}
这会是一个好方法吗?在实际实现中如何在不添加条件的情况下处理启用/禁用设置的最佳方法是什么?
谢谢!