设计模式——工厂模式之工厂方法
来源:互联网 发布:2016qq悄悄话破解软件 编辑:程序博客网 时间:2024/06/05 17:29
简单来说,工厂方法就是定义一个统一的接口(协议),用于创建对象,然后由子类去进行实现,我只定义工厂规范标准,具体的实现交给具体的工厂,去生产对应的产品,这样干到底有什么用呢?还是解除耦合。
第一个角色:抽象工厂(例如:IComputerFactory)
第二个角色:具体工厂(例如:LennovoComputerFactory)
第三个角色:抽象产品(例如:IComputer)
第四个角色:具体产品(例如:LenovoComputer)
它们的关系是这样的
先来定义一个抽象的商品IComputer,他去定义一个协议 ,然具体的商品区实现
//电脑规范@protocol IComputer <NSObject>//处理器-(void)cpu;//主板-(void)mainborad;在具体的商品中区实现这些协议
LenovoComputer.h
@interface LenovoComputer : NSObject<IComputer>LenovoComputer.m
//处理器-(void)cpu{ NSLog(@"Intel 处理器");}//主板-(void)mainborad{ NSLog(@"Intel主板");}还可以有其他的很多商品,如MacbookComputer,SamsungComputer,也遵循抽象商品的协议,并去实现这些协议。
在抽象的工厂IComputerFactory中,我们同样去定义一个协议,然后让具体的工厂去实现这个协议
IComputerFactory.h
//生产电脑-(id<IComputer>)createComputer;
具体的工厂去实现这个协议
LennovoComputerFactory.h@interface LennovoComputerFactory : NSObject<IComputerFactory>
LennovoComputerFactory.m
//生产电脑-(id<IComputer>)createComputer{ return [[LenovoComputer alloc] init];}
同样也可以有其他的具体工厂器实现这个协议,每个协议可被很多具体的对象去实现
创建的时候我们只需要指定是哪个工厂就可以了,我不管是哪个商品,生产什么商品由具体的工厂决定
id<IComputerFactory> factory = [[LennovoComputerFactory alloc] init];id<IComputer> product = [factory createComputer];[product cpu];[product mainborad];
创建的时候我们只需指定具体的工厂,让工厂去执行创建商品的方法,这样就达到了解耦的目的,倘若哪天我想要MacBookComputer,只需改变具体的工厂类型就可以了,很方便,即使是项目里有50个地方需要改,也都只需动这一行代码,试想不采用这种方式,而是在50个地方都去创建具体的商品,那么要想全部替换就很头疼了。
其实我们也往往会让一个工厂支持几种商品类型,具体创建那个商品,由外部决定
LennovoComputerFactory.m
//生产电脑-(id<IComputer>)createComputer:(NSString*)productClassName{ return [[NSClassFromString(productClassName) alloc] init];}外部传入创建的商品类型
id<IComputerFactory> factory = [[LennovoComputerFactory alloc] init];id<IComputer> product = [factory createComputer:@"LenovoComputer"];[product cpu];[product mainborad]
工厂方法也是根据不同的使用场景,有不同的形式,实际开发中要灵活应变。
工厂模式中简单工厂的详解http://blog.csdn.net/neveraway1993/article/details/72897149
希望对你有帮助。
阅读全文
0 0
- 设计模式——工厂模式之工厂方法
- java设计模式示例程序之 ——简单工厂、工厂方法、抽象工厂模式
- 设计模式—工厂方法
- 设计模式—工厂方法
- 设计模式——抽象工厂模式、工厂方法模式
- Java设计模式—工厂方法模式&抽象工厂模式
- Java设计模式—工厂方法模式&抽象工厂模式
- 设计模式之——工厂方法设计模式
- 设计模式——简单工厂,工厂方法,抽象工厂
- 设计模式——简单工厂、工厂方法、抽象工厂
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- java设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- android中如何让设配开启横竖屏
- Leveldb源码解析第六篇【memtable】
- 音频编解码基本流程
- Python批量打开文件以及获取文件名、目录及路径
- Zookeeper集群环境搭建实践
- 设计模式——工厂模式之工厂方法
- mac下安装pyaudio
- 50以内奇数的和
- 基础知识记录:intent解析
- 2048-控制台版本
- sql group by,order by
- 只执行一次的装饰器
- javascript笔记(六)
- 尚学堂百战程序员1573题 答案 第三章