Ich versuche, das Konzept der Komponentenprogrammierung beim Schreiben meines iOS-Spiels zu implementieren.Objective-C und Komponentenprogrammierung
In dem Buch „Komponentensoftware: Beyond Objektorientierte Programmierung“ von Clemens Szyperski, erwähnt er eine Taktik:
(nicht Zitat) Beginnen Sie mit einer Klasse Ente, die Komponente Quack hinzufügt. Klasse Quack implementiert eine Schnittstelle für das Objekt, das sie aufruft. Die Schnittstelle gibt eine Methode an, die Quacks verwendet quack()
Mit diesem Setup hat Duck keine Referenz oder Kenntnis über Quack, außer wenn es instanziiert ist und nie verwendet wird danach in Ente. Andere Objekte können duckObject.quack() aufrufen und Quack erreichen, während Sie nur auf das Duck-Objekt achten.
Bisher habe ich versucht, dies ohne Erfolg zu implementieren. Vorzugsweise sollte Duck nicht mehr Code als Instanziierung benötigen, der Rest sollte in Quack-Klasse platziert werden. Kann dies in Objective-C (für iOS?) Erfolgen, oder sollte ich COP lieber für andere Sprachen verwenden?
Ich weiß, Sie bereits akzeptiert ein Antwort, aber haben Sie sich die Kategorien von Objective-C angesehen? Sie können eine Quack-Kategorie auf Duck implementieren, die die "-quack" -Methode hinzufügt. Die Duck-Klasse müsste sich dessen nicht bewusst sein. (Für das, was es wert ist, bin ich mit KillerX, dass dies klingt wie ein schreckliches Design Anti-Muster.) –