Je veux créer des classes de voitures, de véhicules et d'avion avec les propriétés suivantes:iPhone - méthode d'initialisation d'une classe abstraite
- Voiture et avion sont tous les deux sous-classes de véhicules.
- Car et Airplane ont tous deux une méthode initWithString.
- Les chaînes d'entrée acceptables pour les méthodes initWithString et de son avion de voitures ne se chevauchent pas.
- Le véhicule est "presque abstrait", en ce sens que toute instance initialisée doit être une voiture ou un avion.
- Il est possible de passer une chaîne dans le véhicule et retourner une instance de voiture, une instance de l'avion, ou nul, selon la chaîne d'entrée.
Tout modèle de conception particulière, je préférerais? En particulier pour les méthodes initWithString et/ou newVehicleWithString de Vehicle.
Je pense qu'il est utile de noter que dans ce cas, il serait probablement beaucoup plus efficace de surcharger alloc et de renvoyer une instance singleton spéciale qui alloue et initialise la classe correcte et la retourne. –
C'est vrai, mais cela ressemble beaucoup à une optimisation prématurée. – codewarrior
Il semble que de nos jours tout le monde doive aller à l'extrême. Maintenant, les gens ne pensent même pas à des solutions simples quand il y a une opportunité très claire et facile à «optimiser». Dans votre cas, vous créez et jetez des objets 100% du temps. Nous avons besoin d'équilibre, les gens :) Dans ce cas, il serait plus propre et plus correct de toute façon - alloc est également où les clusters de classe sont créés, pas dans init. –