在介绍工厂模式之前,先说一下OC并没有提供抽象类(abstract class),所以如果我们需要的话需要自己实现一下,其实就是把init重写,如果直接调用本类的init 返回nil。
- (instancetype)init
{
if ([self isMemberOfClass:YiFu.class]) { /** 这里一定要用 isMemberOfClass, 区分开isKindOfClass */
[self doesNotRecognizeSelector:_cmd];
return nil;
}
self = [super init];
if (self) {
}
return self;
}
-
简单工厂
直接用代码示意
我们去买衣服 ,有毛衣 和 卫衣两种
- 创建一个协议 YiFuProtocol
@protocol YiFuProtocol <NSObject> - (NSString *)name; @end
- 创建 MaoYi 和 WeiYi 类 遵守YiFuProtocol协议
@interface WeiYi : NSObject <YiFuProtocol> @end @implementation WeiYi - (NSString *)name { return @"WeiYi L"