Nachdem ich viele Blogs, Foreneinträge und mehrere Apple Dokumente gelesen habe, Ich weiß immer noch nicht, ob umfangreiche Unterklassen in Objective-C eine weise Sache zu tun ist oder nicht.Ist Unterklasse in Objective-C eine schlechte Praxis?
Nehmen Sie zum Beispiel die folgenden Fall:
Say Ich entwickle ein Puzzle-Spiel, das viele Elemente hat. Alle diese Elemente teilen eine bestimmte Menge des gleichen Verhaltens. Dann in meiner Sammlung von Elementen, verschiedene Gruppen von Elementen teilen gleich Verhalten, Scheidungs Gruppen von Gruppen, etc ...
Also, nach der Bestimmung, was erbt von dem, was, entschied ich mich Unterklasse aus der Vergessenheit. Und warum sollte ich nicht? Angesichts der Leichtigkeit Tweaking allgemeine Verhalten nimmt mit diesem Modell, ich denke, ich habe etwas erreicht OOP ist gemeint für.
Aber - und das ist die Quelle meiner Frage - Apple-Erwähnungen Delegierten verwenden, Datenquelle Methoden und informelle Protokolle für Subklassifizieren. Es macht mir wirklich den Verstand, warum?
Es scheint zwei Lager zu geben. Diejenigen, die für Unterklassen sind, diejenigen, die nicht dafür sind. Es hängt offenbar vom persönlichen Geschmack ab. Ich frage mich, was die Vor- und Nachteile der massiven Unterklassenbildung sind und keine massive Unterklassenbildung?
Um es einzupacken, ist meine Frage einfach: Bin ich richtig? Und warum oder warum nicht?
Kriem, Apple spricht über die Verwendung von Kakao im Allgemeinen, nichts mit Objective-C zu tun. Für jedes einzelne Projekt müssen Sie entscheiden, wie Sie Ihre Anwendung und Codebasis am besten einrichten. In Apples Fall haben sie Cocoa (insbesondere AppKit/UIKit) mit MVC- und IoC-Paradigmen eingerichtet, also schlagen sie vor, dass Sie keine Dinge wie NSControl usw. selbst ableiten, wenn Sie stattdessen Delegaten verwenden könnten. Zusammenfassend: Diese Warnung gilt speziell für den Cocoa-Rahmen, nicht für Objective-C im Allgemeinen. –
@Jason: Das ist eine ziemlich gute Antwort, warum es als ein einfacher Kommentar verlassen? – mouviciel
@mouviciel - Ich denke einfach nicht, denke ich. Jetzt gibt es eine Reihe von Antworten, die im Grunde dasselbe sagen, also lohnt es sich nicht, mehr Lärm hinzuzufügen :) –