Ruby中的Module

Ruby中没有Java语言中的interface,Ruby只支持单继承。Ruby通过Mix-in提供对类的扩展,其灵活性要比Java中的接口强大很多。
  Ruby中通过Module实现Minx-in。
  Module,带来的两个好处:
   1. 提供命名空间,组织类名冲突。
   2.实现了min-in能力
  Module的几点说明:
   1.Module是方法和类常量的集合
   2.Module中的方法包括实例方法和Module方法
   3.Module不能实例化
   4.Module中的实例方法要么作为类实例方法(include),要么作为类的类方法(extend)
   5.Module方法可以直接被module使用

例子
module M
    def m1
        puts 'instance methods'
    end
    #第一种方式定义module方法
    def M.m2
    puts 'module method'    
    end
    #第二种方式定义module方法
    def self.m3
        puts 'module method m3' 
    end
  #第三种方式定义module方法
    class << self
    def m4
          puts 'module method m4'   
      end
    end
end
M.m2    #=>'module method'
M::m2   #=>'module method'
M.m3    #=> 'module method m3'  
M::m3   #=>'module method m3'
M.m4    #=>'module method m4'
M::m4   #=>'module method m4'
#module中的实例方法作为类的实例方法
class C1
    include M
end
C1.new.m1  #=> 'instance methods'
#module中的实例方法作为类的类方法
class C2
    extend M
end
C2.m1   #=> 'instance methods'

参考链接
http://ruby-doc.org/core-2.3.0/Module.html
http://www.tutorialspoint.com/ruby/ruby_modules.htm

你可能感兴趣的:(Ruby中的Module)