분수를 나타내는 Objective-C 클래스를 만들고 있다고 가정하고, 변경 불가능한 버전과 변경 가능한 버전을 만들고 싶습니다.objective-c 클래스의 변경 불가능하고 변경 가능한 버전을 만드는 가장 효율적인 방법은 무엇입니까?
Foundation 프레임 워크의 패턴에 따라 변경할 수있는 버전에 fractionByAddingFraction:
, 변경 가능한 버전에 addFraction:
메서드가 표시 될 것으로 예상 할 수 있습니다.
필자가 직면 한 패러독스는 두 클래스 사이에 한 번만 분수 추가 논리를 포함하는 방법입니다. 불변의 fractionByAddingFraction:
메서드는 코드 중복을 피하기 위해 변경 가능한 addFraction:
메서드에 대해 알아야하고 변경 가능한 메서드를 포함하는 것은 변경할 수없는 클래스에서 호출 될 수 있음을 의미합니다. 오브제는 그 요점을 무너 뜨린다.
간략한 설명 (또는 더 나은 여전히,이 단순화 된 예제의 연속)은 많이 감사하겠습니다!
클래스 예제는 _value 오브젝트 _를 나타내는 것으로 보이므로 변경 가능한 버전을 제공해야한다고 생각하지 않습니다. __ 그냥 불변으로 만드십시오 .__ –
@ Jordão이 특별한 예를 들어, 당신은 옳습니다. 나는이 개념이 전반적인 개념에 대한 혼란을 설명하는 가장 쉽고 가장 간결한 방법이라고 생각했다. (더 복잡한 클래스와 관련이 있기 때문이다.) 그것에 관계없이 어떻게 될지에 대한 생각? – user1385983