Предположим, я создаю класс Objective-C, представляющий дробь, и хочу создать неизменяемые и изменяемые версии.
Следуя шаблонам фреймворка Foundation, вы можете ожидать увидеть метод FractionByAddingFraction:
в неизменяемой версии и addFraction:
в изменяемой версии.
Парадокс, с которым я столкнулся, заключается в том, как включить логику сложения дробей только один раз между двумя классами. Кажется, что неизменяемый метод FractionByAddingFraction:
должен знать об изменяемом методе addFraction:
(и использовать его), чтобы избежать дублирования кода, и при этом включать изменяемые методы в реализация неизменяемого класса означает, что они вполне могут быть вызваны для неизменяемого объекта, что противоречит сути.
Краткое пояснение (или, что еще лучше, продолжение этого упрощенного примера) было бы очень признательно!