📜  为什么 getter 和 setter 很重要 ruby (1)

📅  最后修改于: 2023-12-03 15:35:58.095000             🧑  作者: Mango

Getter 和 Setter 很重要的理由

在 Ruby 中,Getter 和 Setter 分别对应读取和写入实例变量的方法。它们的存在让我们可以更加灵活地管理对象的属性,进而实现更加高效和可靠的代码。下面就让我们详细看看这些方法的重要性。

Getter

Getter 方法用于读取对象的属性。例如,我们可以这样定义一个表示人的类:

class Person
  attr_reader :name, :age

  def initialize(name, age)
    @name = name
    @age = age
  end
end

这里我们使用 attr_reader 定义了类的两个属性,以便在不破坏封装性的前提下,让外部直接读取它们。这里的 Getter 方法不仅让代码更加简洁明了,还能够避免因误操作导致的属性值错误修改。

Setter

Setter 方法用于设置对象的属性。例如,我们可以继续改进上面的 Person 类:

class Person
  attr_reader :name, :age
  attr_writer :name, :age

  def initialize(name, age)
    @name = name
    @age = age
  end
end

这里我们使用 attr_writer 定义了类的两个属性,让外部直接设置它们的值。尽管 Setter 方法会导致对象的属性暴露给外部,但在某些场景下,这样做有可能会降低代码的耦合程度,进而提升代码的复用性和可维护性。

Getter 和 Setter 深化理解

除了为对象的实例变量提供 Getter 和 Setter 方法以外,我们还可以自己手动编写这些方法。例如,上面的 Person 类也可以这样写:

class Person
  def initialize(name, age)
    @name = name
    @age = age
  end

  def name
    @name
  end

  def age
    @age
  end

  def name=(new_name)
    @name = new_name
  end

  def age=(new_age)
    @age = new_age
  end
end

这里我们手动编写了 Getter 和 Setter 方法,让代码变得更加灵活。值得一提的是,除了使用 attr_readerattr_writer 这样的方法外,我们还可以使用 attr_accessor 同时返回 Getter 和 Setter 方法。

总结

总之,Getter 和 Setter 方法是 Ruby 中非常重要的机制之一。通过它们,我们可以更加自由、灵活地管理对象的属性,从而实现更加高效和可靠的代码。在编写 Ruby 代码时,务必充分利用这些机制。