iOS 工厂模式

本文通过一个Objective-C实现的动物类工厂模式实例,展示了如何根据不同需求创建不同的子类实例。该模式适用于当不能确定具体创建哪个子类时,通过传递类名的方式实现对象的创建。

1. 概念

工厂模式用于创建某个类的子类实例的

要解决的问题:在其他地方,不确定要创建那个具体的子类的时候使用


2. 代码

1.Animal 动物类

#import <Foundation/Foundation.h>

// 动物类:作为父类
@interface Animal : NSObject
- (void)eat;
@end

#import "Animal.h"

@implementation Animal
- (void)eat {
    NSLog(@"Animal eating...");
}
@end

2. Dog 狗

#import "Animal.h"

@interface Dog : Animal
- (void)eat;
@end

#import "Dog.h"

@implementation Dog
- (void)eat {
    NSLog(@"Dog eating...");
}
@end

3. Cat 猫

#import "Animal.h"

@interface Cat : Animal
- (void)eat;
@end

#import "Cat.h"

@implementation Cat
- (void)eat {
    NSLog(@"Cat eating...");
}
@end

4.AnimalFactory 动物工厂

#import <Foundation/Foundation.h>
#import "Animal.h"
@interface AnimalFactory : NSObject

+ (Animal *)createAnimalWithName:(NSString *)name;

@end

#import "AnimalFactory.h"

@implementation AnimalFactory

// 工厂方法
+ (Animal *)createAnimalWithName:(NSString *)className {
    Class class = NSClassFromString(className);
    Animal *animal = [[class alloc] init];
    
    return animal;
}

@end

5. ViewController

#import "AnimalFactory.h"
#import "Animal.h"
@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    Animal *animal = [AnimalFactory createAnimalWithName:@"Dog"];
    [animal eat];   // 打印 Dog eating...
}
@end


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风流 少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值