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