MST

星途 面试题库

面试题:Objective-C中策略模式的基础实现

请用Objective-C代码实现一个简单的策略模式,假设我们有一个支付功能,有微信支付、支付宝支付两种支付策略,展示如何运用策略模式来实现支付功能的灵活切换。
47.8万 热度难度
编程语言Objective-C

知识考点

AI 面试

面试题答案

一键面试
  1. 定义支付协议
@protocol PaymentStrategy <NSObject>
- (void)payWithAmount:(CGFloat)amount;
@end
  1. 实现微信支付策略类
@interface WeChatPayment : NSObject <PaymentStrategy>
- (void)payWithAmount:(CGFloat)amount {
    NSLog(@"使用微信支付 %.2f 元", amount);
}
@end
  1. 实现支付宝支付策略类
@interface AlipayPayment : NSObject <PaymentStrategy>
- (void)payWithAmount:(CGFloat)amount {
    NSLog(@"使用支付宝支付 %.2f 元", amount);
}
@end
  1. 定义上下文类
@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
  1. 使用示例
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;
}