我正在尝试创建一个工厂类结构,其中我的抽象基类 PDObject 根据在 NSDictionary 中传递给它的信息将实例实例化为适当的子类。这是我的 PDObject 初始化方法:
- (id)initWithDictionary:(NSDictionary *)dictionary inEnvironment:(PDEnvironment *)environment {
NSString *className = [dictionary objectForKey:@"objectType"];
if (className) {
Class objectClass = NSClassFromString(className);
if ([objectClass isSubclassOfClass:[PDObject class]]) {
self = [[objectClass alloc] initWithDictionary:dictionary inEnvironment:environment];
} else {
NSLog(@"tried to instantiate an object of the wrong object type");
self = nil;
}
} else {
NSLog(@"tried to instantiate an object without an object type");
}
return self;
}
我想知道是否有人知道这种模式的任何安全问题。我担心字典中可能会传入一些恶意的东西并实例化一些意想不到的东西。我检查以确保它是 PDObject 的正确子类。这里有什么我应该担心的,还是我只是偏执?