Les groupes de classes fournissent une interface publique unique à un groupe d'implémentations concrètes et privées de sous-classes. Un programmeur objective-c utilise souvent les clusters de classes sans s'en rendre compte - et c'est là tout l'intérêt d'un cluster de classes. Le rôle d'un cluster de classes est de cacher la complexité des détails d'implémentation derrière une interface publique.
De nombreuses classes de la Fondation sont des groupes de classes, tels que NSString, NSArray, NSDictionary et NSNumber. Lorsque vous appelez [NSString stringWithFormat:]
le groupe de classes vous donne une classe concrète qui implémente la fonction NSString
interface. Il peut s'agir d'un NSConcreteString
, NSCFString
, NSFooBarString
etc. La classe que le cluster vous donne est basée sur le constructeur ou l'initialisateur que vous appelez et les arguments.
Pour cette raison, les regroupements de classes sont l'un des concepts les plus puissants de la programmation Objective-C.
- Très facile à mettre en œuvre
- Il est facile de modifier l'implémentation sous-jacente sans changer le code qui l'appelle.
- Facilité de fournir différentes implémentations concrètes au moment de l'exécution (c'est-à-dire des ressources de test ou des objets fantaisie).
- En raison de ce qui précède, facile à tester et à remanier.
Si vous venez d'une autre langue, vous connaissez peut-être le modèle du Gang of Four. Les clusters de classes comportent des éléments de l'usine abstraite et des modèles de façade.
La documentation publique d'Apple couvre les clusters de classe (et la manière de les mettre en œuvre et de les étendre) de manière assez extensive. Malheureusement, j'ai constaté que pour de nombreux développeurs iOS, ce motif et d'autres motifs spécifiques à Cocoa constituent un angle mort.
Compétences de base du cacao : Groupe de classes
Guide des fondamentaux du cacao : Groupes de classes
Des exemples de l'implémentation de vos propres clusters de classes sont disponibles sur GitHub.
0 votes
Oups, la prochaine fois je penserai à ajouter un lien pour ce terme. Si vous aviez commenté la réponse à votre question précédente, j'y aurais répondu.
2 votes
Pour information : récemment (décembre 2013), Apple a recommandé l'utilisation des clusters de classes comme moyen de gérer la rétrocompatibilité avec iOS 6 tout en utilisant iOS 7. C'était lors des Apple Tech Talks 2013/Berlin dans la session "Architecting Modern Apps, Part 2". Apple a indiqué qu'elle publierait des vidéos des sessions peu après le dernier événement (17 décembre). Peut-être cela aidera-t-il à comprendre les Class Clusters dans le contexte réel des changements apportés à iOS 6/7.