模式问题
1.列举你所知道的设计模式,并对其中两个进行简单介绍
答:设计模式是一套被反复使用,多数人知晓的,经过分类编目的,代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。
(1)MVC设计模式:模型(M)-视图(V)-控制器(C)模式,可将您的代码分割为几个独立的部分。模型部分定义应用程序的数据引擎,负责维护数据的完整性;视图部分定义应用程序的用户界面,对显示在用户界面上的数据出处则没有清楚的认识;控制器部分则充当模型和控制器的桥梁,帮助实现数据和显示的更新。
(2)Delegateion模式:这个设计模式有助于一个对象的数据传输到另一个对象。delegateion通过protocol实现的。
(3)委托模式:可以对复杂对象进行修改而不需要子类化。与子类化不同的是,您可以照常使用复杂对象,而将对其行为进行修改的定制代码放在另一个对象中,这个对象就称为委托对象。复杂对象需要在预先定义好的时点上调用委托对象的方法,使其有机会运行定制代码。
(4)Target-action设计模式:这个设计模式用按钮,等控件把用户的交互变成代码,让程序可以执行。然后控件通过用户交互通知给您的应用程序,当用户以预先定义好的方式(比如轻点一个按键),进行交互时,控件就会将消息发送给你指定的对象,接收到消息后,目标对象就会以恰当的方式进行响应(例如在点击按钮会更新应用状态)
(5)单例设计模式:单例模式是一个类在系统中只有一个实例对象。通过全局的一个入口点对这个实例对象进行访问。单例使用场景一般在程序中,它经常用于只希望一个类只有一个实例。
(6)观察者模式:观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。
2.
简述NotificationCenter、KVC、KVO、Delegate?并说明它们之间的区别?
答:
MVC就是Model-View-Controller的缩写,M指的是业务模型,V指的是用户页面,C指的是控制器。MVC是架构模式,是讲M和
V的代码分离,从而使同那个一个程序可以使用不同的表现形式。
M:表示数据和业务规则,V是用户看到的并与之交互的页面,C是接受用户的输入并调用M和V取完成用户需求的
单例,代理,观察者,工厂模式等
单例模式:说白了就是一个类不通过alloc方式创建对象,而是用一个静态方法返回这个类的对象。系统只需要拥有一个的
全局对象,这样有利于我们协调系统整体的行为;
代理模式:代理模式给某一个对象提供一个代理对象,并由代理对象控制对源对象的引用.比如一个工厂生产了产品,并不想
直接卖给用户,而是搞了很多代理商,用户可以直接找代理商买东西,代理商从工厂进货.常见的如QQ的自动回复就属于代
理拦截,代理模式在iphone中得到广泛应用.
观察者模式: 当一个物体发生变化时,会通知所有观察这个物体的观察者让其做出反应。实现起来无非就是把所有观察者的
对象给这个物体,当这个物体的发生改变,就会调用遍历所有观察者的对象调用观察者的方法从而达到通知观察者的目的;
5.
谈谈你对单例的理解?
答:单例模式是iOS常用设计模式中的一种。单例设计模式的作用是使得这个类的一个对象成为系统中的唯一实例,因此需要用一种唯一的方法去创建这个对象并返回这个对象的地址。那么,我们何时使用单例模式呢?
1、类只能有一个实例,而且必须从一个为人熟知的访问点对其访问。
2、这个唯一的实例只能通过子类化进行扩展,而且扩展的对象不会破坏客户端代码。