加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Ruby:为什么在类方法就足够的情况下实例化一个对象并使用实例方

发布时间:2020-12-17 02:48:07 所属栏目:百科 来源:网络整理
导读:我正在尝试通过阅读其他人编写的代码来学习设计模式.最近我一直关注类方法和实例方法之间的区别. 在我阅读的一些代码中,我遇到了以下实例方法的使用: class Foo def bar!(baz) # do something to baz endendmy_foo = Foo.newmy_foo.bar!(baz) 为什么在这里
我正在尝试通过阅读其他人编写的代码来学习设计模式.最近我一直关注类方法和实例方法之间的区别.

在我阅读的一些代码中,我遇到了以下实例方法的使用:

class Foo
  def bar!(baz)
    # do something to baz
  end
end

my_foo = Foo.new
my_foo.bar!(baz)

为什么在这里使用实例方法? Foo类只存在bar,所以为什么不使用类方法呢?从我一直在学习的东西,我的倾向就是这样:

class Foo
  def self.bar!(baz)
    # do something to baz
  end
end

Foo.bar!(baz)

有没有理由采用第一种模式?这只是一个偏好问题吗?我的想法是,使一个对象使用内存,所以第一个实际上是低效的,但我正在寻找更有经验的人的任何建议.谢谢!

解决方法

没有理由比前者更喜欢前者.由于GC做了更多的工作,实例化一个类可能会导致轻微的性能损失,但我认为你应该问自己这个问题:

Is there ever any reason to create multiple instances of the class?

即你能不能做foo = Foo.new然后到处使用foo?如果是这样,您根本不需要课程.事实上,类似的论点适用于您的第二个例子.虽然它比第一个改进,但仍然没有理由创建该类的实例.所以不要使用类,使用模块.

module Foo
  def self.bar(baz)
  end
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读