19.6 Getters and setters
在Java编程界,getter和setter方法是一种流行的设计模式。一个getter和一个setter与一个类的实例变量相关。它们有类似于 getFoo
和 setFoo
这样的名称,其中Foo
是变量的名称。getter方法返回该变量的当前值,setter方法修改该值。
getter和setter并不是严格必要的,因为实例变量可能是公有的。getter和setter的论点是,它们允许在获取和设置时执行额外的功能,例如在变量变化时更新相关的值,通知监听器的变化,或者对值执行约束。即使最初不需要这些功能,以后也可以在不改变接口的情况下添加这些功能。
尽管如果你必须暴露实例变量,使用getter和setter可能是有意义的,但最好首先不要暴露实例变量。暴露的实例变量意味着类的部分实现在外部是可见的,这违反了信息隐藏的理念,并增加了类的接口的复杂性。Getter 和 setter 是浅的方法(通常只有一行),因此它们在类接口中添加了混乱,却没有提供多少功能。最好是尽可能地避免getter和setter(或任何实现数据的暴露)。
建立设计模式的风险之一是开发人员认为该模式是好的并尝试尽可能多地使用它。这导致了Java中getter和setter的过度使用。
Last updated