да, но это заставляет меня знать слишком много о том, какие хранилища могут быть в системе.
класс - "серверная часть". процесс использования и конфигурирования класса - "клиентская".
клиентский код обязан знать, что и как есть в системе.
а исходя из логики задачи максимум на что можно расчитывать - необходимость сменить место хранения (память, база и т.п.).
исходя уже из этой логики - ты будешь обязан поменять TheRegistry на TheMemcachedRegistry.
хотя намного логичнее не трогая определения базовых классов (к изменению декларацияй которых не всегда даже есть доступ по куче всяких причин) написать что-то вроде:
$foobar = new concreteRegistry('storageDSN');
-~{}~ 10.02.09 12:10:
ну так или иначе - я своё мнение уже со всяких сторон озвучил. я бы сделал делегирование. я считаю что наследование тут никаким боком.
и, да, цели в виде собеседования - повергли в тихий шок, вот такого совсем не ожидал.