提示十六
2022-06-01 本文已影响0人
飞絮搅青冥
今天来看: 在公共类中使用访问方法而不是公共属性。
- 如果不更改API,则无法更改其表示形式,无法强制执行不变量,并且在访问属性时无法执行辅助操作。
- 应该被具有私有属性和公共访问方法的类(getter)所取代,而对于可变类来说,它们应该被替换为setter设值方法。
- 如果一个类在其包之外是可访问的,则提供访问方法来保留更改类内部表示的灵活性。如果一个公共类暴露其数据属性,那么以后更改其表示形式基本上没有可能,因为客户端代码可以散布在很多地方。
- 如果一个类是包级私有的,或者是一个私有的内部类,那么暴露它的数据属性就没有什么本质上的错误。
- 虽然公共类直接暴露属性并不是一个好主意,但是如果属性是不可变的,那么危害就不那么大了。
这一章的内容还是比较容易理解的,就是如果一个类的属性是公开的,那么以后想要修改这个类就变得难以想象。文中举了jdk中Point和Dimension两个类作为例子,还说暴露 Dimension 的内部结构的决定仍然导致着严重的性能问题。我去找了一下这两个类,感觉都挺简单的,不清楚为什么还会影响性能,可能需要对计算机图形学了解一点内容或者认真研究一下相关代码才能更清楚。
Dimension