Що таке Singleton Classes в Ruby?

Singleton Classes в Ruby є особливим типом класів, які дозволяють створювати тільки один екземпляр класу. Це означає, що ви можете мати лише один об’єкт цього класу у вашій програмі. Singleton Classes називаються так через те, що вони підтримують патерн проектування “Singleton”, який гарантує, що клас має лише один екземпляр і надає глобальний доступ до цього екземпляра.

У Ruby Singleton Classes реалізуються за допомогою концепції singleton-класів або класів-одиначок. Коли ви створюєте singleton-клас, він пов’язується з конкретним об’єктом, і можна визначити методи та змінні саме для цього об’єкта, не впливаючи на інші об’єкти того ж класу.

Ось приклад створення singleton-класу в Ruby:

class SingletonExample
  @instance = new

  private_class_method :new

  def self.instance
    @instance
  end

  def some_method
    puts "Hello from singleton class!"
  end
end

У цьому прикладі ми створюємо клас SingletonExample, який має приватний конструктор new, щоб уникнути створення нових екземплярів ззовні. Ми також визначаємо змінну класу @instance, яка містить єдиний екземпляр класу. Метод instance повертає цей єдиний екземпляр.

Використовуючи цей клас, ви можете отримати доступ до єдиного екземпляра і викликати його методи:

singleton_instance = SingletonExample.instance
singleton_instance.some_method

Це забезпечить, що у вас завжди буде тільки один екземпляр класу SingletonExample у вашій програмі.