MyT*_*tle 4 java immutability effective-java
我读了Effective Java,并写了
如果一个类不能成为不可变的,尽可能地限制它的可变性......
和
......除非有令人信服的理由使其成为非最终的,否则每个领域都是最终的.
所以需要我总是让我所有的POJO(例如简单的Book带班ID,Title和Author域)班不变?当我想要改变我的对象的状态时(例如用户在代表很多书的表中更改它),而不是setter使用这样的方法:
public Book changeAuthor(String author) {
return new Book(this.id, this.title, author); //Book constructor is private
}
Run Code Online (Sandbox Code Playgroud)
但我的事情真的不是好主意..
请解释我何时使类不可变.
不,您不需要总是让您的POJO不可变.就像你说的,有时它可能是一个坏主意.如果您的对象具有随时间变化的属性,则设置器是最舒适的方式.
但是你应该考虑使你的对象不可变.它将帮助您找到错误,更清晰地编程并处理并发.
但我认为你引用说的一切:
如果一个类不能成为不可变的,尽可能地限制它的可变性......
和
......除非有令人信服的理由使其成为非最终的,否则每个领域都是最终的.
这就是你应该做的.除非它不可能,因为你有一个二传手.但是要注意并发性.
| 归档时间: |
|
| 查看次数: |
479 次 |
| 最近记录: |