Недавно я столкнулся с ситуацией, когда было полезно создать версию класса с отложенной загрузкой, обернув его фабрику.
Я хотел бы провести небольшое исследование, чтобы выяснить, есть ли какие-либо проблемы, с которыми я сталкиваюсь. раньше я не думал, что слишком сильно на него полагаюсь, но я не знаю, что искать.
edit: в моем случае это создание файлов cookie и файлов сеансов, которые мне не нужны делать, пока учетные данные пользователя не проверены.
interface FooInterface
{
public function bar();
}
class Foo implements FooInterface
{
public function bar()
{
...
}
}
interface FooFactoryInterface
{
public function getFoo():FooInterface;
}
class FooFactory
{
public function getFoo():FooInterface
{
return new Foo(...);
}
}
class LazyFoo implements FooInterface
{
protected
$foo=null,
$factory;
public function __construct(FooFactoryInterface $factory)
{
$this->factory=$factory;
}
public function bar()
{
if($this->foo===null) $this->foo=$this->factory->getFoo();
return $this->foo->bar();
}
}