Pour mon tout nouveau ORM (chibi-ORM), je suis confronté à une décision de conception.Quoi de mieux: Chaîne globale ou singleton?
Je construis l'API pour les relations, comme:
@interface SamplePerson : DbObject {
NSString *name;
DbObjectRelation *cities;
}
Maintenant, pour DbObjectRelation
Je cette mockup:
@interface DbObjectRelation : NSObject {
NSMutableArray *childRows;
DbObject *parent;
BOOL isLoaded;
}
-(void) load;
-(void) addObject:(DbObject *) childRow;
-(void) removeObject:(DbObject *) childRow;
- (id)initWitParent:(DbObject *)parentObject;
, je dois donc un chemin à l'intérieur de la charge savoir base de données utiliser pour charger les enregistrements.
Je pense que dans ma connexion ont à DB quelque chose comme:
static NSString *currentDbNameSingleton = nil;
+(NSString *)currentDbName {
@synchronize(self) {
if (currentDbNameSingleton == nil) {
currentDbNameSingleton = [[NSString alloc]
}
}
return sharedInst;
}
+(void) setCurrentDbName(NSString *)name {
@synchronize(self) {
currentDbNameSingleton = [name copy];
}
}
Mais se demander si est mieux construire la classe DB comme un singleton. Ceci est pour les projets iPhone ...
Je ferais ce peu différemment: extern NSString * const CurrentDbName dans l'en-tête fichier. et NSString * const CurrentDbName = @ "nom de la base de données" dans l'implémentation. La position de const rend le pointeur lui-même constant. – Abizern