一、iOS中基础的设计模式有?
1.代理模式
2.观察者模式
3.MVC模式
4.单例模式
5.工厂模式
6.策略模式
二、设计原理
1.MVC模式
划分三个角色,Mode模型保存数据、View视图添加与用户交互的控件,Controller控制器协调所有工作和业务逻辑。
2.单例模式
确保一个单例类只有一个实例,这个实例是全局唯一访问点。苹果大量使用了此模式。例如:[NSUserDefaults standardUserDefaults], [UIApplication sharedApplication], [UIScreen mainScreen], [NSFileManager defaultManager],所有的这些方法都返回一个单例对象。
单例模式实现:
1.使用GCD dispatch_once 整个程序运行间只执行一次。
2.加线程锁没有实例时创建一次。
3.没有实例时创建有实例时不创建。
https://www.jianshu.com/p/f7ab39bd748c
3.代理模式
为了使类之间的耦合性更松散。好的代码应该对扩展开放,对修改关闭。
例子中UITableView是委托人,UIViewController是代理人首先得满足一个条件:就是在.h文件中申明它拥有代理资格: UITableViewDelegate ,在.m文件实现委托的功能。
4.观察者模式
当发生变化时,所有的观察者都会接到通知,Cocoa通过通知(Notifications)和Key-Value Observing(KVO)来实现观察者模式。
5.策略模式
有多种算法和策略可以来实现相同的功能,定义一系列的算法,把每一个算法封装起来, 并且使它们可相互替换。
6.工厂模式
为了创建对象,建立创建对象的工厂。
三、设计原则
1.单一
一个类只做一件事。
如:CALayer:动画和视图的显示。
UIView:只负责事件传递和事件响应。
2.开闭原则
考虑后续的扩展性,减少在基础了上来回修改。
3.接口隔离
多使用多个专门的协议,而不是创建一个庞大包含所有功能的协议
4.依赖倒置
抽象不依赖具体实现,具体实现可以依赖抽象。调用接口感觉不到接口的内部实现。
5.里氏替换
父类可以被子类无缝替换,且原功能不受影响。
6.迪米特法则
一个对象应当对其他对象尽可能少的了解,实现高聚合、低耦合。
网友评论