From 2c052cec8f9714d743d9d798174a138150396652 Mon Sep 17 00:00:00 2001 From: xiaoleeza Date: Thu, 29 Aug 2019 10:05:51 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=A4=E5=A4=84=E6=96=87=E5=AD=97=E9=94=99?= =?UTF-8?q?=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/notes/16. 在公共类中使用访问方法而不是公共属性.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/notes/16. 在公共类中使用访问方法而不是公共属性.md b/docs/notes/16. 在公共类中使用访问方法而不是公共属性.md index b6f5f6e..946911f 100644 --- a/docs/notes/16. 在公共类中使用访问方法而不是公共属性.md +++ b/docs/notes/16. 在公共类中使用访问方法而不是公共属性.md @@ -39,7 +39,7 @@ class Point {   但是,**如果一个类是包级私有的,或者是一个私有的内部类,那么暴露它的数据属性就没有什么本质上的错误——假设它们提供足够描述该类提供的抽象。** 在类定义和使用它的客户端代码中,这种方法比访问方法产生更少的视觉混乱。 虽然客户端代码绑定到类的内部表示,但是这些代码仅限于包含该类的包。 如果类的内部表示是可取的,可以在不触碰包外的任何代码的情况下进行更改。 在私有内部类的情况下,更改作用范围进一步限制在封闭类中。 -  Java 平台类库中的几个类违反了公共类不应直接暴露属性的建议。 着名的例子包括 `java.awt` 包中的 `Point` 和 `Dimension` 类。 这些类别应该被视为警示性的示例,而不是模仿的例子。 如条目 67 所述,时至今日,暴露 `Dimension` 的内部结构的决定仍然导致着严重的性能问题。 +  Java 平台类库中的几个类违反了公共类不应直接暴露属性的建议。 著名的例子包括 `java.awt` 包中的 `Point` 和 `Dimension` 类。 这些类别应该被视为警示性的示例,而不是模仿的例子。 如条目 67 所述,时至今日,暴露 `Dimension` 的内部结构的决定仍然导致着严重的性能问题。   虽然公共类直接暴露属性并不是一个好主意,但是如果属性是不可变的,那么危害就不那么大了。当一个属性是只读的时候,除了更改类的 API 外,你不能改变类的内部表示形式,也不能采取一些辅助的行为,但是可以加强不变性。例如,下面的例子中保证每个实例表示一个有效的时间: @@ -66,4 +66,4 @@ public final class Time { } ``` -  总之,公共类不应该暴露可变属性。 公共累暴露不可变属性的危害虽然仍然存在问题,但其危害较小。 然而,有时需要包级私有或私有内部类来暴露属性,无论此类是否是可变的。 +  总之,公共类不应该暴露可变属性。 公共类暴露不可变属性的危害虽然仍然存在问题,但其危害较小。 然而,有时需要包级私有或私有内部类来暴露属性,无论此类是否是可变的。