模块是 Ruby 的特色功能之一。如果说类表现的是事物的实体(数据)及其行为(处理),那么模块表现的就只是事物的行为部分。Module是Class的父类:Class.superclass => Module
- 模块不能拥有实例
- 模块不能被继承
Ruby 中module 钩子方法
- include:把一个module的方法注入为实例方法
- extend:把一个module的方法注入为类方法
module Management
def user_name
puts "hi!"
end
end
# user_name方法注入为实例方法
class User
Include Management
…
end
User.new.user_name => "hi!"
# user_name方法注入为类方法
class Staff
extend Management
…
end
User.user_name => "hi!"