工厂方法模式

2019-03-31  本文已影响0人  一毛钱

工厂方法模式(定义)

定义一个用于创建对象的统一的接口,然后由子类实现。

工厂方法模式->角色划分

角色一:抽象产品
角色二:具体产品
角色三:抽象工厂
角色四:具体工厂

工厂方法模式->原理案例

工厂创建电脑->富士康工厂
华为工厂、三星工厂、苹果工厂、联想工厂…
如何知道你制造出来的产品是电脑?
因为:电脑标准规范(协议、接口)->特点
角色一:抽象产品->定义产品规范(规格)->电脑规范
角色二:具体产品->具体实现(具体制造目标)->具体电脑 具体电脑:华为电脑、三星电脑、苹果电脑…
角色三:抽象工厂->定义工厂规范和标准
角色四:具体工厂->华为工厂、三星工厂

角色一:抽象产品->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
上一篇下一篇

猜你喜欢

热点阅读