uby是非常灵活的,她允许你做到任何你能想到的神奇的事情。
今 天在读模块和混含(mix-in)时,被深深的打动了一把。在Ruby语言中,我们可以把一些常用的业务逻辑(应用)封装在一个模块当中,在未来的某个类 中,如果我们希望此类的实例去拥有模块中所包含的功能,只需要在将模块混含入类中就可以了,此类的对象实例就理所当然的拥有了“外来”的力量!之前我一直 在写Java代码,因此对于混含我似乎感觉她是一种神奇的力量,完全打破了传统的圈圈框框,而且通过模块,可以进一步的细化封装,使代码得到更大限度的重 用,何其的伟大?!
为了证明这一点,我们可以让混含之后类的实例对象调用respond_to?方法来检测是否拥有了模块中定义的方法,我们可以编写如下类和模块代码:
module Message
def show_message
puts "Hello Anthrax!"
end
end
require "message"
class ShowMessage
include Message
end
show = ShowMessage.new
if show.respond_to?("show_message")
puts "OK!!!"
end
show.show_message
执行程序,显示:
OK!!!
Hello Anthrax!
说明我们之前的操作确实如同我们预想的那样,模块的功能被混入了类,可以被类的对象实例随意使用,而不需要象Java那样依赖先天继承或实现多个接口。这仅仅是Ruby语言强大灵活特色之冰山一角,有兴趣的朋友也可以和我一起加入的Ruby的学习中来。
ruby mix-in
最新推荐文章于 2021-02-13 18:40:50 发布