Contents
  1. 1. 工厂模式(简单工厂)、获取一个抽象接口所有实现类的实例
  2. 2. 抽象接口(标准)的定义
  3. 3. 接口实现类一、Dog
  4. 4. 接口实现类二、Cat
  5. 5. 工厂提供抽象接口所有实现版本的对象

工厂模式(简单工厂)、获取一个抽象接口所有实现类的实例

  • 一个抽象接口
  • 多个实现类
  • 工厂提供所有实现类的对象

重点是只有 一个抽象接口


抽象接口(标准)的定义

1
2
3
4
5
6
7
8
9
10
11
#import <Foundation/Foundation.h>

@protocol Animal <NSObject>

- (NSString *)name;

- (NSString *)type;

- (void)cry;

@end

接口实现类一、Dog

1
2
3
4
5
6
7
#import <Foundation/Foundation.h>

#import "Animal.h"

@interface Dog : NSObject <Animal>

@end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#import "Dog.h"

@implementation Dog

- (NSString *)name {
return @"我是狗";
}

- (NSString *)type {
return @"我是哺乳动物";
}

- (void)cry {
NSLog(@"狗在叫");
}

@end

接口实现类二、Cat

1
2
3
4
5
6
7
#import <Foundation/Foundation.h>

#import "Animal.h"

@interface Cat : NSObject <Animal>

@end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#import "Cat.h"

@implementation Cat

- (NSString *)name {
return @"我是猫";
}

- (NSString *)type {
return @"我是哺乳动物";
}

- (void)cry {
NSLog(@"猫在叫");
}

@end

工厂提供抽象接口所有实现版本的对象

1
2
3
4
5
6
7
8
9
10
#import <Foundation/Foundation.h>

//向外暴露工厂实例的抽象接口
#import "Animal.h"

@interface Factory : NSObject

+ (id<Animal>)animal;

@end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#import "Factory.h"

//管理所有的具体实现类
#import "Dog.h"
#import "Cat.h"

@implementation Factory

+ (id<Animal>)animal {

//1. 返回动物1、猫
return [Dog new];

//2. 返回动物1、狗
// return [Cat new];
}

@end
Contents
  1. 1. 工厂模式(简单工厂)、获取一个抽象接口所有实现类的实例
  2. 2. 抽象接口(标准)的定义
  3. 3. 接口实现类一、Dog
  4. 4. 接口实现类二、Cat
  5. 5. 工厂提供抽象接口所有实现版本的对象