iOS开发常用的集中设计模式
来源:互联网 发布:枫叶知秋 编辑:程序博客网 时间:2024/05/21 07:46
"设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。" ----百度百科
开篇点题 ------
任何理论都需要实例来支撑, 相信也很少有人在码代码之前就要来把各种设计模式了解透彻.
JAVA中为总所周知的设计模式有24种(也有说27种), 同样在iOS中适用且常用的设计模式有6种:
1. 单例模式
2. 委托模式 (代理模式)
3. MVC模式
4. 观察者模式 (KVO, Notification)
5. 策略模式
6. 工厂模式
上面这些设计模式最大的特点就是降低不同类之间的耦合度, 俗称"解耦合". 不同模块之间的代码互相独立, 分工明确, 不会因为相互调用而产生过多依赖.
1. 单例模式
单例模式在项目中通常被用作管理类. 在整个项目中只需要创建一次, 使用时候调用即可.
系统常见单例类有: UIApplication, NSNotificationCenter.
有时候我们自己也需要自定义一个管理用的单例类.
创建一个单例的常用方式:
+ (instancetype)shareUserInfoManager{ static XLUserInfoManager *manager = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ manager = [[self alloc] init]; }); return manager;}如上, 提供一个类方法创建类, 使用GCD保证这个类只会被创建一次.
一个合格的单例类除了一个创建用的类方法外, 通常还需要重写系统的几个构造方法. 如果在MRC模式, 则还需要重写几个构造函数, 重写release, retain, retainCount, copy等和内存管理相关的方法, 以防止引用计数的增减. 不过因为单例类大家都会通过公共的类方法来调用, 实际开发中不写的场合也非常多.
2. 委托模式 (代理模式)
当我们有这样一个需求: 一个页面的事件响应, 需要在另一个页面执行某些操作. 或者一个页面需要向另一个页面传值.
比如添加通讯录, 当我们通过编辑添加了一条通讯录信息, 通常会回到通讯录列表, 这时候需要这个列表进行刷新, 并显示刚添加的那条通讯录.
代理的设置分委托和代理各三步:
委托方:1. 声明协议方法
2. 声明代理属性
3. 调用代理
代理方:1. 设置代理
2. 添加协议
3. 实现代理方法
举个栗子:
@class BuyBook;@protocol BuyBookDelegate <NSObject>@optional- (void)buyBookComplete:(BuyBook *)buyBook;@end@interface BuyBook : UIView@property (nonatomic, weak) id<BuyBookDelegate> delegate;@end这里声明了一个BuyBook类。在.h文件中声明了BuyBookDelegate协议,并定义了协议方法。
其中@optional是指该协议方法并非必须实现。
之后定义delegate属性,该属性的类型为id,即任何遵从协议的对象都可以设置为该代理。
@implementation BuyBook- (void)buyBook { if ([self.delegate respondsToSelector:@selector(buyBookComplete:)]) { [self.delegate buyBookComplete:self]; }}@end当有程序调用到buyBook方法时候,就执行代理方法。
使用判断来保证代理被继承且对应方法已经被实现的时候才调用。
@interface ViewController () <BuyBookDelegate>@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; BuyBook * buyBook = [[BuyBook alloc] init]; buyBook.delegate = self; }- (void)buyBookComplete:(BuyBook *)buyBook { NSLog(@"buy book complete!");}在使用这个类的时候,需要设置对象的delegate属性为self。
添加对应的协议名称。
实现需要的协议方法。
3. MVC模式
使用Model(模型),View(视图),Controller(控制器)将整个项目功能划分成三个不同的模块,使得项目分工明确,层次清晰,易于维护。
iOS在编程的时候,也经常使用MVC的思想来构筑代码,最明显的就是文件夹的划分。
.... (未完待续
- iOS开发常用的集中设计模式
- iOS的集中设计模式
- java常用的的集中设计模式
- IOS开发中常用的设计模式
- iOS开发中常用的设计模式
- IOS开发中常用的设计模式
- iOS开发中常用的设计模式
- iOS开发中常用的设计模式
- iOS开发常用设计模式
- ios开发的常用的23种设计模式
- ios之开发中常用的设计模式介绍
- iOS开发中常用的几种设计模式介绍
- iOS开发中常用的几种设计模式
- iOS 开发常用的23种设计模式简介
- iOS常用的设计模式
- iOS中常用开发设计模式总结
- iOS开发中常用设计模式
- IOS开发-四种常用设计模式
- iOS8以后第三方键盘,获取高度为0的问题
- 67Add Binary
- Mvc Html.BeginForm 方式提交Form前验证
- POJ 2159
- linux文件的隐藏属性chattr,lsattr
- iOS开发常用的集中设计模式
- UFT工具
- Android学习Broadcast Receiver(广播接收者) 注意事项
- maven报错
- 测试对象管理—共享对象库
- Mac终端出现“terminal pointer being freed was not allocated…”解决办法
- C语言基础(一)编译、数据类型、注释、代码块
- C语言基础(二)常量、变量、类型转换、转义符、printf、scanf
- C++ operator关键字(重载操作符)