假设我正在创建一个表示分数的 Objective-C 类,并且想要创建不可变和可变版本。
按照 Foundation 框架中的模式,您可能希望fractionByAddingFraction:
在不可变版本和addFraction:
可变版本中看到该方法。
我遇到的悖论是如何在两个类之间只包含一次分数加法逻辑。似乎不可变fractionByAddingFraction:
方法需要了解(并使用)可变addFraction:
方法以避免代码重复,但是在不可变类的实现中包含可变方法意味着可以想象它们可以在不可变对象上调用,这违背了这一点。
一个简短的解释(或者更好的是,这个简化示例的延续)将不胜感激!