不可变类很棒,但有一个大问题我想不出一种明智的方法来解决——循环。
class Friend {
Set<Friend> friends();
}
一个人如何塑造“我把你当朋友,而我又把你当朋友”的模型?
不变性这个来自外界的类绝对应该是不可变的。出于相等性检查的目的,内部保存的值应该是恒定的。
[[[编辑:添加代码以演示完全不可变的概念]]]
这就是为什么构建器对不可变对象如此友好——它们允许在构建过程中进行可变性,以便在“冻结”之前将所有内容设置好。在这种情况下,我想您需要一个支持创建循环的好友生成器。
final FriendBuilder john = new FriendBuilder().setName("john");
final FriendBuilder mary = new FriendBuilder().setName("mary");
final FriendBuilder susan = new FriendBuilder().setName("susan");
john
.likes(mary)
.likes(susan);
mary
.likes(susan)
.likes(john);
susan
.likes(john);
// okay lets build the immutable Friends
Map<Friend> friends = FriendsBuilder.createCircleOfFriends(john, mary, susan);
Friend immutableJohn = friends.get("john");
编辑:添加了下面的不可变示例来演示方法:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)