Evgenii Legotckoi
27 июня 2016 г. 12:47

User Guide #16 - Ruby - Singleton методы

Поведение экземпляра класса определяется его методом, но бывают случаи, когда мы знаем, что определённый экземпляр должен иметь особое поведение. В большинстве языков, мы должны решить эту проблему определением другого класса, который будет инстанцирован один раз. В Ruby же мы можем дать любому объекту свои собственные методы с конкретным поведением для одного конкретного экземпляра класса.

  1. ruby> class SingletonTest
  2. | def size
  3. | print "25\n"
  4. | end
  5. | end
  6. nil
  7. ruby> test1 = SingletonTest.new
  8. #<SingletonTest:0xbc468>
  9. ruby> test2 = SingletonTest.new
  10. #<SingletonTest:0xbae20>
  11. ruby> def test2.size
  12. | print "10\n"
  13. | end
  14. nil
  15. ruby> test1.size
  16. 25
  17. nil
  18. ruby> test2.size
  19. 10
  20. nil

В этом примере, test1 и test2 принадлежат одному классу, но test2 имеет переопределённый метод size и его поведение отлично. Данный метод, который имеет особое поведение для единственного объекта, называется Singleton методом.

Singleton методы часто используются для элементов в графических интерфейсах (GUI), где необходимо производить различные действия, когда нажимаются различные кнопки.

Singleton методы не являются уникальным для Ruby, так как они появились в CLOS, Dylan и т.д. Также некоторые языки, например, Self и NewtonScript имеют только singleton методы. Их иногда называют языками прототипирования.

Вам это нравится? Поделитесь в социальных сетях!

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь