设计模式系列6-工厂模式
前言:
什么是工厂方法模式?
何时使用工厂方法模式?
工厂方法在iOS中的实现:
@interface FMCellPhone : NSObject
- (void)call;
@end
#import "FMCellPhone.h"
@implementation FMCellPhone
- (void)call
{
}
@end
2.定义一个具体手机类FMAppleCellPhone:
#import "FMCellPhone.h"
@interface FMAppleCellPhone : FMCellPhone
@end
#import "FMAppleCellPhone.h"
@implementation FMAppleCellPhone
- (void)call
{
NSLog(@"用apple手机打电话");
}
@end
#import "FMCellPhone.h"
@interface FMNOKIACellPhone : FMCellPhone
@end
#import "FMNOKIACellPhone.h"
@implementation FMNOKIACellPhone
- (void)call
{
NSLog(@"用NOKIA手机打电话");
}
@end
4.创建一个抽象工厂类FMCellPhoneFactory:
#import <Foundation/Foundation.h>
#import "FMCellPhone.h"
//这是一个抽象电话工厂类,提供造电话功能
@interface FMCellPhoneFactory : NSObject
- (FMCellPhone *)buildCellPhone;
@end
#import "FMCellPhoneFactory.h"
@implementation FMCellPhoneFactory
- (FMCellPhone *)buildCellPhone
{
}
@end
5.创建Apple手机具体工厂类:
#import "FMCellPhoneFactory.h"
@interface FMAppleCellPhoneFactory : FMCellPhoneFactory
@end
#import "FMAppleCellPhoneFactory.h"
#import "FMCellPhone.h"
#import "FMAppleCellPhone.h"
@implementation FMAppleCellPhoneFactory
- (FMCellPhone *)buildCellPhone
{
NSLog(@"Apple手机工厂");
return [[FMAppleCellPhone alloc] init];
}
@end
#import "FMCellPhoneFactory.h"
@interface FMNOKIACellPhoneFactory : FMCellPhoneFactory
@end
#import "FMNOKIACellPhoneFactory.h"
#import "FMNOKIACellPhone.h"
#import "FMCellPhone.h"
@implementation FMNOKIACellPhoneFactory
- (FMCellPhone *)buildCellPhone
{
NSLog(@"NOKIA手机工厂");
return [[FMNOKIACellPhone alloc] init];
}
@end
7.测试:
//制造一个Apple电话,打电话
FMCellPhoneFactory *appleFactory = [[FMAppleCellPhoneFactory alloc] init];
FMCellPhone *applePhone = [appleFactory buildCellPhone];
[applePhone call];
//制造一个NOKIA电话,打电话
FMCellPhoneFactory *NOKIAFactory = [[FMNOKIACellPhoneFactory alloc] init];
FMCellPhone *NOKIAPhone = [NOKIAFactory buildCellPhone];
[NOKIAPhone call];
8.测试结果如下图: