如何对不可变类实例之间的循环建模?

2024-01-09

不可变类很棒,但有一个大问题我想不出一种明智的方法来解决——循环。

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(使用前将#替换为@)

如何对不可变类实例之间的循环建模? 的相关文章

随机推荐