iOS-工厂方法模式的运用
来源:互联网 发布:尤克里里谱软件 编辑:程序博客网 时间:2024/05/16 18:25
原文发布在个人简书,更多内容欢迎关注笔者简书 ,评论、互相交流请到简书,谢谢!
设计模式这个高大上的词似乎每天都在听。设计模式在服务端设计时体现的比较明显。虽然移动端设计模式没有服务端那么明显,但是做为移动端开发人员掌握各种设计模式的思想有助于提高代码质量。
今天先聊聊工厂方法模式在iOS端的实际运用。后续通过其他篇幅再聊其他的设计模式。
一些设计模式书籍里都是这样描述工厂方法模式: 定义创建对象的接口,让子类决定实例化哪一个类。工厂方法使得一个类的实例化延迟到其子类。 工厂方法使用的情况:一个类无法预期需要生成哪个类的对象,想让其子类来指定所生成的对象。
比如:有交通工具这样一个工厂类,它下面有一个createVehicle生产交通工具这样一个方法,返回交通工具的实例
,但是具体返回什么交通工具并不确定。 交通工具工厂类
下又有飞机工厂类、汽车工厂类、火车工厂类这些子类,我们能知道的是飞机工厂可以生存飞机实例,汽车工厂可以生产汽车实例,火车工厂可以生产火车实例。
所以,只需要在相应的工厂createVehicle方法中
,返回相应的交通工具实例就可以了。(飞机工厂的createVehicle方法中返回飞机的实例,汽车工厂的createVehicle方法中返回汽车的实例…)
参考上面类图最直白的理解:创建不同的工厂去生产不同的产品,但是这些工厂的生产产品的方法是一样的。,如果笔者理解有误,也随时欢迎大家指正,多多交流。
我们不直接去创建具体的detailProduct对象
,而是通过FatherFactory的子类,不同的子类都实现或者重写同一个方法,但是返回不同的product对象实例
。在实际运用时,就可以根据切换不同的工厂,得到不同product实例了。笔者已写好详细的demo
说明: 笔者将NXWebViewKit做成了一个组件,所以克隆下来demo结构如下
如果对组件化不了解的朋友,可以看笔者之前的几篇关于组件化实践的文章
下面笔者将通过实际的应用来说说笔者理解的工厂方法模式。
该demo组件中有三种类型的webView(ProgressWebView、LoadingWebView、AlertWebView)
。
不直接alloc init
具体的webView类型,具体的webView实例
是通过WebViewFactory工厂基类
中定义的抽象方法createWebViewWithFrame:params
来创建的.
ProgressWebViewFactory 具体实现如下
@implementation ProgressWebViewFactory+ (WebView *)createWebViewWithFrame:(CGRect)frame params:(NSDictionary *)params { return [[ProgressWebView alloc] initWithFrame:frame params:params];}@end
LoadingWebViewFactory 具体实现如下
@implementation LoadingWebViewFactory+ (WebView *)createWebViewWithFrame:(CGRect)frame params:(NSDictionary *)params { return [[LoadingWebView alloc] initWithFrame:frame params:params];}@end
AlertWebViewFactory 具体实现如下
@implementation AlertWebViewFactory+ (WebView *)createWebViewWithFrame:(CGRect)frame params:(NSDictionary *)params { return [[AlertWebView alloc] initWithFrame:frame params:params];}@end
三种不同类型的webView对应三个WebViewFactory的子类工厂,通过重写父类的抽象方法来生成具体的webView实例,ProgressWebViewFactory工厂
生成ProgressWebView的实例
,LoadingWebViewFactory工厂
生成LoadingWebView的实例
,AlertWebViewFactory工厂
生成AlertWebView的实例
.
工厂设计模式作为各大设计模式书籍的开端、还是比较简单的。详细的demo在这里下载,欢迎交流。
- iOS-工厂方法模式的运用
- iOS应用设计模式开发中对简单工厂和工厂方法模式的运用
- 运用 工厂方法模式 模拟创建自己的奶茶店
- iOS设计模式:工厂方法
- iOS设计模式:工厂方法
- iOS设计模式:工厂方法
- iOS设计模式:工厂方法
- iOS设计模式-工厂方法
- iOS设计模式-工厂方法
- 有关工厂模式的运用实例
- 简单工厂模式的基本运用
- 工厂模式简单运用
- ios--设计模式--工厂方法模式
- 对 桥接模式 的个人理解,以及与 工厂方法模式、建造者模式 的结合运用
- iOS设计模式(03):工厂方法
- iOS设计模式(03):工厂方法
- iOS设计模式(03):工厂方法
- iOS设计模式(03):工厂方法
- Spring注解@Resource和@Autowired区别对比
- 指针和引用
- multiprocessing(python 版)
- JPA + SpringData 操作数据库原来可以这么简单 ---- 深入了解 JPA
- 蒟蒻复习之-----LCA
- iOS-工厂方法模式的运用
- 自启动的管理
- Weex踩坑记录
- Rhyme/ Hibernate4 持久化与ORM的理解以及Hibernate4优缺点
- printf重定向
- JZOJ3126 大LCP(GDKOI 2013)
- CS 300 X Distance 思维+并查集
- RxSwift + MJRefresh 打造自动处理刷新控件状态
- (HTML5)表单样式