设计方式系列6-工厂模式
设计模式系列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.测试结果如下图:
源码下载:http://download.****.net/detail/yanglei_java/6439373