У меня есть Factory Method
для экземпляра класса. Есть ли способ предотвратить прямое наведение этого класса?Метод фабрики: Предотвращение класса из Direct Instancing
Единственный вариант, который я вижу, это использовать аргумент, переданный в __construct()
, но это не то, что я ищу.
С другой стороны, изготовление __construct()
будет идеальным, но я не хочу, чтобы MyClass
расширил Factory
без фактической необходимости.
Что вы, ребята, думаете?
Factory Method:
class Factory
{
public static function instance()
{
return new MyClass(true);
}
}
MyClass:
class MyClass
{
public function __construct($isFactory = false)
{
if (!$isFactory) {
throw new Exception('Use Factory::instance() to create an object');
}
}
}
Первый; определение MyClass должно быть пересмотрено: ** класс MyClass() {** должен читать ** класс MyClass {** без **() ** после класса MyClass ... ;-) – Poiz
@Poiz thanks, didn Не обращай внимания на эту опечатку. Исправлено сейчас. –
Каков ваш прецедент? – PeeHaa