听老歌 发表于 2011-11-20 15:49

Module方法调用好不好

Module方法调用好不好







以前说,用module给class加singleton方法,和extend到类include到类的instance
现在看看这个


Ruby代码1.module Prober   
2.def probe_invoke(type, data = {})   
3.    p = Probe.new({:probe_type => type.to_s,   
4.      :data => data.to_json, :probe_status => 0, :retries => 0})   
5.    p.save   
6.end
7.end
module Prober
def probe_invoke(type, data = {})
    p = Probe.new({:probe_type => type.to_s,
      :data => data.to_json, :probe_status => 0, :retries => 0})
    p.save
end
end掉的时候

Ruby代码1.require 'prober'
2.include Prober   
3.probe_invoke("send_sms", sms_text)
require 'prober'
include Prober
probe_invoke("send_sms", sms_text)Ruby代码1.module Prober   
2.def Prober.probe_invoke(type, data = {})   
3.    p = Probe.new({:probe_type => type.to_s,   
4.      :data => data.to_json, :probe_status => 0, :retries => 0})   
5.    p.save   
6.end
7.end
8.
9.Prober.probe_invoke("send_sms", sms_text)
module Prober
def Prober.probe_invoke(type, data = {})
    p = Probe.new({:probe_type => type.to_s,
      :data => data.to_json, :probe_status => 0, :retries => 0})
    p.save
end
end

Prober.probe_invoke("send_sms", sms_text)Ruby代码1.module Prober   
2.
3.class << self
4.
5.    def probe_invoke(type, data = {})   
6.      p = Probe.new({:probe_type => type.to_s,   
7.          :data => data.to_json, :probe_status => 0, :retries => 0})   
8.      p.save   
9.    end
10.
11.    # more module instance methods ...   
12.
13.end
14.
15.end

zuerrong 发表于 2011-11-22 18:10

我也常
instance_method.extend module_name
扩展单态方法。
页: [1]
查看完整版本: Module方法调用好不好