У меня есть класс фабричного метода, который возвращает системный класс кеша (псевдокод):
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(){};
}
Будет ли это хорошим подходом? Как, по-вашему, будет лучший способ обработки включенного/отключенного параметра без добавления условных выражений в фактическую реализацию?
Спасибо!