Каков наиболее эффективный способ создания неизменяемых и изменяемых версий класса Objective-C?

Предположим, я создаю класс Objective-C, представляющий дробь, и хочу создать неизменяемые и изменяемые версии.

Следуя шаблонам фреймворка Foundation, вы можете ожидать увидеть метод FractionByAddingFraction:в неизменяемой версии и addFraction:в изменяемой версии.

Парадокс, с которым я столкнулся, заключается в том, как включить логику сложения дробей только один раз между двумя классами. Кажется, что неизменяемый метод FractionByAddingFraction:должен знать об изменяемом методе addFraction:(и использовать его), чтобы избежать дублирования кода, и при этом включать изменяемые методы в реализация неизменяемого класса означает, что они вполне могут быть вызваны для неизменяемого объекта, что противоречит сути.

Краткое пояснение (или, что еще лучше, продолжение этого упрощенного примера) было бы очень признательно!

9
задан Hailei 10 May 2012 в 02:16
поделиться