欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ruby 单态方法 分析

程序员文章站 2022-03-20 15:49:02
 实体的行为取决于其类,但很多时候我们知道一个特定的实体需要特定的行为.在很多语言里,我们必须陷入另外再定义一个类的麻烦里,即使它只是用来接着实体化一次.在rub...
 实体的行为取决于其类,但很多时候我们知道一个特定的实体需要特定的行为.在很多语言里,我们必须陷入另外再定义一个类的麻烦里,即使它只是用来接着实体化一次.在ruby里,我们可以赋予任何对象属于其自身的方法.

ruby> class singletontest
    |   def size
    |     print "25\n"
    |   end
    | end
   nil
ruby> test1 = singletontest.new
   #<singletontest:0xbc468>
ruby> test2 = singletontest.new
   #<singletontest:0xbae20>
ruby> def test2.size
    |   print "10\n"
    | end
   nil
ruby> test1.size
25
   nil
ruby> test2.size
10
   nil  


在这个例子里,test1和test2属于相同的类,但test2已被赋给一个重载的size方法,因而他们有不同的行为.一个仅属于某个对象的方法叫做单态方法.

单态方法常常用于图形用户界面(gui)的元素的设计,在那里当不同的按钮被压下时将会激发不同的事件.

单态方法并非ruby的专利,它也出现在clos,dylan等语言中.同时,有些语言,比如,self和newtonscript仅有单态方法.他们有时被称作基于范例(prototype-based)语言.