设计模式系列6-工厂模式
2013-10-22 23:28
337 查看
设计模式系列6-工厂模式
前言:
前一节讲了建造者模式,这一节我们讲23种设计模式之工厂方法模式。什么是工厂方法模式?
定义创建对象的接口,让子类决定实例化哪一个类,工厂方法使得一个类的实例化延迟到子类。(最初定义出于于《设计模式》(Addison-Wesley,1994))。何时使用工厂方法模式?
在以下情境中,自然会想到使用这一模式:1.编译时无法准确预期要创建的对象的类;
2.类想让其子类决定在运行时创建什么;
3.类有若干辅助类为其子类,而你想将返回哪个子类这一信息局部化。
工厂方法在iOS中的实现:
1.定义一个抽象手机类:@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
3.创建一个具体手机类FMNOKIACellPhone:
#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
6.创建NOKIA手机具体工厂类:
#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.csdn.net/detail/yanglei_java/6439373
相关文章推荐
- PHP设计模式系列 - 工厂模式
- 设计模式系列——三个工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)
- 工厂模式----设计模式系列
- 设计模式系列——三个工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)
- 设计模式系列——三个工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)
- 设计模式实现系列-简单工厂模式-工厂模式-抽象工厂模式
- 设计模式系列——三个工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)
- 设计模式系列——三个工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)
- 设计模式系列-工厂模式 4000
- 设计模式系列——三个工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)
- 设计模式系列——三个工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)
- 设计模式系列(二)——Factory模式 工厂模式
- 设计模式系列——三个工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)
- 设计模式之工厂模式系列(简单工厂,工厂模式,抽象工厂模式)
- 设计模式系列-工厂模式 推荐
- 细说设计模式之-让你看得懂的工厂模式系列
- 设计模式学习系列5 工厂模式
- Android设计模式系列(1)--SDK源码之组合模式
- 【设计模式】设计模式系列
- C# 设计模式系列教程-工厂方法模式