iOS开发中常用设计模式

  1. 代理模式
    使用场景:一个类的某些功能需要其他类来实现,只要遵循了规定协议的类就可以实现这些功能;
    例子:典型例子 UITableView的dataSource和delegate
    自定义delegate
  2. 单例模式
    使用场景:在一个项目中只需要一个类的同一个实例,而且需要这个实例共享一些资源
    在C#、java、C++中的实现方式是私有化类的构造函数,然后在重写一个创建实例的公有方法,而在Objective-C中是在allocWithZone中通过使用多线程中都只执行一次的方法dispatch_once来创建对象。
    UIAccelerometer的实例化方法+sharedAcceleromete;

     UIApplication类提供了 +sharedAPplication方法创建和获取UIApplication单例
    
     NSBundle类提供了 +mainBunle方法获取NSBundle单例
    
     NSFileManager类提供了 +defaultManager方法创建和获得NSFileManager单例。(PS:有些时候我们得放弃使用单例模式,使用-init方法去实现一个新的实例,比如使用委托时)
    
     NSNotificationCenter提供了 +defaultCenter方法创建和获取NSNotificationCenter单例(PS:该类还遵循了另一个重要的设计模式:观察者模式)
    
     NSUserDefaults类提供了 +defaultUserDefaults方法去创建和获取NSUserDefaults单例
    
  3. 观察者模式
    使用场景:一个类想要让某些类接收本类提前创建好的通知,而谁来接收通知是由接受者自己决定,如果该类想接收这个通知,这个类就必须向通知中心添加通知监听,这就好比是订阅报纸一样
    例子:1.创建一个NSNotification,并添加到通知中心,2.需要接收通知的对象,就告诉NSNotificationCenter,我需要这个通知,并且做一些操作。
    [[NSNotificationCenter defaultCenter]postNotificationName:@”APPTerminate” object:self];
    }

    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(doSomething:) name:@”APPTerminate” object:nil];

KVO也是一种特殊的观察者模式。
使用方法:[被观察对象 addObserver:观察者 forKeyPath: 被观对象的属性名 options: NSKeyValueObservingOptionOld | NSKeyValueObservingOptionNew context: @”pass content” ];

对象属性一改变,调用这个方法,
- (void)observeValueForKeyPath:(NSString )keyPath ofObject:(id)object change:(NSDictionary )change context:(void *)context{
NSLog(@”state change:%@”,change);
}
change参数是包含了新值和旧值的 一个字典
{
kind = 1;
new = @“”;
old = @“”;
}
4. 工厂模式
应用场景:工厂方式创建类的实例,多与proxy模式配合,创建可替换代理类。
优势:易于替换,面向抽象编程,application只与抽象工厂和易变类的共性抽象类发生调用关系。
敏捷原则:DIP依赖倒置原则
实例:项目部署环境中依赖多个不同类型的数据库时,需要使用工厂配合proxy完成易用性替换
注意事项:项目初期,软件结构和需求都没有稳定下来时,不建议使用此模式,因为其劣势也很明显,
增 加了代码的复杂度,增加了调用层次,增加了内存负担。所以要注意防止模式的滥用。
5. 策略模式
使用场景:定义算法簇。将算法封装起来,只提供外界接口调用就行;
实例:排序算法,NSArray的sortedArrayUsingSelector
6. MVC模式
应用场景:是一中非常古老的设计模式,通过数据模型,控制器逻辑,视图展示将应用程序进 行逻辑划分。
实例:model-即数据模型,view-视图展示,controller进行UI展现和数据交互的逻辑控制。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值