工厂方法模式(定义)
定义一个用于创建对象的统一的接口,然后由子类实现。
工厂方法模式->角色划分
角色一:抽象产品
角色二:具体产品
角色三:抽象工厂
角色四:具体工厂
工厂方法模式->原理案例
工厂创建电脑->富士康工厂
华为工厂、三星工厂、苹果工厂、联想工厂…
如何知道你制造出来的产品是电脑?
因为:电脑标准规范(协议、接口)->特点
角色一:抽象产品->定义产品规范(规格)->电脑规范
角色二:具体产品->具体实现(具体制造目标)->具体电脑 具体电脑:华为电脑、三星电脑、苹果电脑…
角色三:抽象工厂->定义工厂规范和标准
角色四:具体工厂->华为工厂、三星工厂
角色一:抽象产品->ComputerProtocol
角色二:具体产品->SXComputer、HWComputer、MacComputer…
角色三:抽象工厂->ComputerFactoryProtocol
角色四:具体工厂->SXComputerFactory、HWComputerFactory…
示例程序
角色一:抽象工厂
//电脑工厂标准
//程序中->引用关系
//判断的依据
@protocol ComputerFactoryProtocol<NSObject>
//流水线
-(id<ComputerProtocol>)getComputer;
@end
//角色三:抽象产品 电脑规范
@protocol ComputerProtocol<NSObject>
//处理器
-(void)cpu;
//显卡
-(void)displaycard;
//主板
-(void)mainborad;
@end
//角色二: 具体工厂
@interface SXComputerFactory : NSObject<ComputerFactoryProtocol>
@end
@implementation SXComputerFactory
-(id<ComputerProtocol>)getComputer{
return [[SXComputer alloc] init];
}
@end
@interface HWComputerFactory : NSObject<ComputerFactoryProtocol>
@end
@implementation HWComputerFactory
-(id<ComputerProtocol>)getComputer{
return [[HWComputer alloc] init];
}
@end
//角色四: 具体产品
@interface SXComputer : NSObject<ComputerProtocol>
@end
@implementation SXComputer
//处理器
-(void)cpu{
NSLog(@"三星处理器");
}
//显卡
-(void)displaycard{
NSLog(@"三星显卡");
}
//主板
-(void)mainborad{
NSLog(@"三星主板");
}
@end
@interface HWComputer : NSObject<ComputerProtocol>
@end
@implementation HWComputer
//处理器
-(void)cpu{
NSLog(@"华为处理器");
}
//显卡
-(void)displaycard{
NSLog(@"华为显卡");
}
//主板
-(void)mainborad{
NSLog(@"华为主板");
}
@end
网友评论