Angenommen, ich mache eine Objective-C-Klasse, die einen Bruch darstellt, und möchte unveränderliche und veränderbare Versionen erstellen.Was ist der effizienteste Weg, um unveränderliche und veränderbare Versionen einer objective-c-Klasse zu machen?
Nach den Mustern im Foundation-Framework können Sie erwarten, dass die Methode fractionByAddingFraction:
in der unveränderlichen Version und addFraction:
in der änderbaren Version angezeigt wird.
Das Paradoxon, auf das ich stoße, ist, wie man nur die Bruchteil-addierende Logik einmal zwischen den zwei Klassen einschließt. Es scheint, dass die unveränderliche fractionByAddingFraction:
Methode über die veränderbare addFraction:
Methode wissen muss (und diese nutzen muss), um Code Duplikation zu vermeiden, und dennoch die veränderbaren Methoden in die Implementierung der unveränderlichen Klasse einbeziehend bedeutet, dass sie möglicherweise auf dem unveränderlichen aufgerufen werden könnten Objekt, das den Punkt besiegt.
Eine kurze Erklärung (oder noch besser, eine Fortsetzung dieses vereinfachten Beispiels) wäre sehr zu begrüßen!
Ihr Klassenbeispiel scheint ein _value-Objekt_ darzustellen, daher sollten Sie keine veränderbare Version dafür bereitstellen. __Just machen Sie es unveränderlich .__ –
@ Jordão Für dieses spezielle Beispiel haben Sie recht. Ich fühlte einfach, dass dies der einfachste und prägnanteste Weg war, um meine Verwirrung über das Konzept im Allgemeinen zu erklären (wie es sich auf kompliziertere Klassen bezieht). Irgendwelche Gedanken darüber, wie es unabhängig davon gemacht würde? – user1385983