- 定义支付协议:
@protocol PaymentStrategy <NSObject>
- (void)payWithAmount:(CGFloat)amount;
@end
- 实现微信支付策略类:
@interface WeChatPayment : NSObject <PaymentStrategy>
- (void)payWithAmount:(CGFloat)amount {
NSLog(@"使用微信支付 %.2f 元", amount);
}
@end
- 实现支付宝支付策略类:
@interface AlipayPayment : NSObject <PaymentStrategy>
- (void)payWithAmount:(CGFloat)amount {
NSLog(@"使用支付宝支付 %.2f 元", amount);
}
@end
- 定义上下文类:
@interface PaymentContext : NSObject
@property (nonatomic, strong) id<PaymentStrategy> paymentStrategy;
- (void)payWithAmount:(CGFloat)amount;
@end
@implementation PaymentContext
- (void)payWithAmount:(CGFloat)amount {
[self.paymentStrategy payWithAmount:amount];
}
@end
- 使用示例:
int main(int argc, const char * argv[]) {
@autoreleasepool {
PaymentContext *context = [[PaymentContext alloc] init];
// 使用微信支付
context.paymentStrategy = [[WeChatPayment alloc] init];
[context payWithAmount:100.0];
// 切换到支付宝支付
context.paymentStrategy = [[AlipayPayment alloc] init];
[context payWithAmount:200.0];
}
return 0;
}