定义:
定义一个用于创建对象的统一接口,然后由子类实现;
角色划分:
角色一:
抽象产品: 定义产品规范的协议
角色二:
具体产品: 具体实现的目标对象
角色三:
抽象工厂: 定义工厂规范的协议 (协议规定, 能够派生出遵循抽象产品协议的目标对象)
角色四:
具体工厂: 派生出具体实现的目标对象
动态切换:
可根据plist文件,xml文件,json文件,宏定义,或者后台接口等,配置相应参数,不需要修改代码,动态创建相应具体工厂和具体产品;
具体代码实现:
#import <UIKit/UIKit.h> @protocol PaymentProtocol<NSObject> /** 获取支付对象*/ - (instancetype)getPaymentObject; /** 其他创建支付方式所需相应参数等 - (instancetype)getPaymentMoney; - (instancetype)getPaymentUserName; */ @end
#import <Foundation/Foundation.h> #import "PaymentProtocol.h" @interface WXPayment : NSObject<PaymentProtocol> @end #import "WXPayment.h" @implementation WXPayment - (instancetype)getPaymentObject{ /** 具体微信支付方式创建,返回相应对象*/ return nil; } @end
#import <UIKit/UIKit.h> #import "PaymentProtocol.h" @protocol PaymentFactoryProtocol<NSObject> /** 获取具体相应支付产品*/ - (id<PaymentProtocol>)getSomePayment; @end
#import <Foundation/Foundation.h> #import "PaymentFactoryProtocol.h" @interface WXPaymentFactory : NSObject<PaymentFactoryProtocol> @end #import "WXPaymentFactory.h" #import "PaymentProtocol.h" #import "WXPayment.h" @implementation WXPaymentFactory - (id<PaymentProtocol>)getSomePayment{ /** 返回所创建的对应支付产品对象*/ return [[WXPayment alloc] init]; } @end
id<PaymentFactoryProtocol> wxFactory = [[WXPaymentFactory alloc] init]; id<PaymentProtocol> payment = wxFactory.getSomePayment; id object = payment.getPaymentObject;