【问题标题】:Software good practices - set and get methods软件良好实践 - 设置和获取方法
【发布时间】:2012-03-28 17:51:51
【问题描述】:

我想了解在软件良好实践方面在超类和子类中使用 setter 和 getter 的想法。 根据您的经验,以下哪种方法是合适的,并且还能促进良好的软件可重用性:

  1. 在超类中声明一个受保护的实例变量并让子类使用它们。
  2. 在超类中用公共getter方法声明私有实例变量,让子类继承父类的getter方法。

【问题讨论】:

  • 这个问题被问了很多次了。
  • 和 3. 私有实例 + 受保护的 getter/setter。

标签: java oop


【解决方案1】:

取决于您的编码风格。有些人更喜欢简洁的代码而不是更冗长的结构化代码。如果您的最终目标是互操作性和可扩展性,那么使用 getter/setter 会“更安全”。另一个优点是使用 getter/setter,您可以执行多个操作,而不仅仅是单个操作,例如 getUsers() 实际上可以将多个数据行制成表格。通过这种方式,您可以整合该操作,而不必在子类中重复它。

使用您的最佳判断。如果值是简单的布尔值或字符串,则可能不需要 g/s。如果它们与查询相关或对状态或数据进行特定的重复修改,请使用 g/s 方法。

【讨论】:

  • 感谢您的帮助。
【解决方案2】:

这两种方法都可以接受。通常,我会有公共的 getter/setter 方法,因为任何人都可以使用它们,而不仅仅是子类。

【讨论】:

  • 谢谢伯纳德的回答。
【解决方案3】:

我选择 1 号。这正是 protected 的存在合理的情况。 Getter 和 setter 用于使用另一个不相关类的类。

【讨论】:

  • 感谢阿尔卑斯山的回答。
【解决方案4】:

当我要创建一个抽象类时,我主要选择 1。

否则,我总是选择 2(创建 getter/setter)。因为:

  1. 不仅可以避免任何意外/意外修改 类的成员变量,当你去的时候它也有帮助 为您的类创建 jUnit 测试用例。

  2. 解耦类。

任何关于面向对象编程的好书都会列出使用 getter 和 setter 的其他好处。

【讨论】:

  • 谢谢 S. Singh。供您发表评论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多