Блокировка возможности создания классов напрямую в обход фабрики

В базовом классе для всех моделей в нашей системе MVC, Я создал фабричный метод BaseCLass :: getNew (), который возвращает экземпляр запрошенного дочернего класса при вызове через SomeChildClass :: getNew ().

Теперь я ищу способ заставить программиста использовать эту фабрику. Т.е., по сути, я бы хотел, чтобы любой класс, созданный напрямую, например:

 new SomeChildClass

генерировал исключение при создании, и можно было бы использовать только классы, созданные фабрикой.

Есть идеи, как этого достичь?

Наш код написан на PHP, но велика вероятность, что ваша идея будет полезной, даже если вы будете думать на другом языке.

edit: Я не могу сделать свой конструктор закрытым, поскольку конструктор фреймворка в классе, который я унаследовал, является общедоступным, и php не позволяет мне этого.

5
задан shealtiel 27 March 2011 в 03:01
поделиться