设计模式
设计模式是为特定场景下的问题而定制的解决方案。
特定场景 - 指问题所在的重复出现的场景。
问题 - 指特定环境下你想达成的目标。
定制的解决方案 - 指在特定环境下克服了问题的限制条件而达成目标的一种设计。
设计模式的起源-模型、视图和控制器
模型-视图-控制器(MVC)
在MVC设计模式中,对象在应该程序中被分为三组,分别扮演模型、视图和
控制器的角色。
MVC不是独立的设计模式,而是由几个其他基本模式组成的复合模式。
在模型对象中封装数据和基本行为
模型对象维护应用程序的数据,并定义操作数据的特定逻辑。
使用视图对象向用户展示信息
视图对象可以响应用户操作,并懂得如何将自己展现在屏幕上。
用控制器对象联系起模型和视图
控制器对象就像视图对象和模型对象的中间人。作为中间人,它建立起沟通渠道,使视图得以知晓模型的变更而给予响应。
控制器对象还可以为应用程序执行其它操作,比如为应用程序管理其它对象的生命周期,进行设置和协调任务。
作为复合设计模式的MVC
MVC本身并不是最基本的设计模式,它包含了若干更加基本的设计模式。
Cocoa(Touch)的MVC用到的模式有:
- 组合(Composite)
- 命令(Command)
- 中介者(Mediator)
- 策略(Strategy)
- 观察者(Observer)
组合
视图对象之间以协作的方式构成一个视图层次体系,其中既可以有复合视图(比如表格),也可以有独立视图(比如文本框或按钮)。每个层次的每个视图节点都可以响应用户的操作并把自己绘制到屏幕上。
命令
这是一种“目标-动作”机制,视图对象可以推迟其它对象(比如控制器)的执行,让其它对象等到某些事件后再执行。这一机制构成了命令模式。
例如:按钮点击打开页面。
中介者
控制器对象起着中间人的作用,而这个中间人则采用了中介者模式,它构成了在模型和视图对象之间传递数据的双向通道。
应用程序的控制器对象将模型的变更传达给视图对象。
策略
控制器可以是视图对象的一个“策略”。视图对象将自身隔离,以期维持其作为数据展示器的唯一职责,而将一切应用程序特有的界面行为的决定委派给它的“策略”对象(控制器)。
观察者
模型对象向它所关注的控制器等对象发出内部状态变化的通知。
(控制器在这里是观察者)
用户点击屏幕—>视图层(V)—(用户操作传递给控制器)—>控制器(C)—-(根据用户操作更新模型)—>模型层(M)
模型层(M)—(通知控制器发生了更新)—>控制器(C)—(在视图上更新显示)—>视图层(V)