Страницы

Поиск по вопросам

пятница, 1 марта 2019 г.

Фабрика синглтон

Имеется класс - простая фабрика, в котором реализован статический метод, который генерирует инстанс одного объекта на основе принятого в параметрах другого объекта. Данный метод может вызываться с разных потоков. Нужно ли делать данную фабрику синглтоном? Если да, то зачем?


Ответ

Одиночка (англ. Singleton) — порождающий шаблон проектирования, гарантирующий, что в однопроцессном приложении будет единственный экземпляр некоторого класса, и предоставляющий глобальную точку доступа к этому экземпляру.
Источник
Чисто из определения - нет, не нужно использовать синглтон.
Паттер "синглтон" предполагает, что будет существовать единственный экземпляр данного класса. Но задайте себе вопрос: а нужен ли вам этот экземпляр?
Имеется класс - простая фабрика, в котором реализован статический метод, который генерирует инстанс одного объекта на основе принятого в параметрах другого объекта.
Предполагая, что этот статический метод является в классе единственным, то нет необходимости вообще иметь возможность порождать объекты данного класса. Вместо этого можно обойтись простой функцией-фабрикой.
class Fabric { static generate(template) { // ... } }
Fabric.generate(instance);
// думаю, можно безболезненно превратить в это:
function generate(template) { // тот же код, что и в Fabric.generate(); }
generate(instance);
Более того, статический метод по определению не может быть вызван на экземпляре класса, поэтому нет абсолютно никакой необходимости в наличии даже единственного экземпляра этого класса, ведь фабричный метод можно вызвать на самом классе (более того, только на нем, поскольку он является статическим).
Поэтому на вашем месте я бы однозначно не стал реализовывать синглтон, а более того, рассмотрел бы возможность избавления от класса вообще.

Комментариев нет:

Отправить комментарий