a design Pattern 通常解决的是软件工程师的问题,Patterns是抽象的设计,而不是code.当你采纳一个design pattern时,你改变它本身有的pattern去满足你自己的需要。
无论你的app类型是什么,了解framework里面的基本的design patterns都是有益的,懂得设计模式将会帮助你用framework时更加的高效,你写的app的可重用性就越高,就更容易扩展,更容易去维护。
MVC(Model- view - controller)
MVC可以说是任何app的核心,MVC把一个app中的objects分成三个roles:model view and controller,在MVC这种pattern中,model记录你的app的数据,view显示user interface和组织app的content.controller 对views进行管理。controller作为model 和views之间的交流桥梁,对用户的行为作出响应并用content填充views
Target action:
target action在概念上非常简单,他就是当某个特定的事件发生的时候,一个object对另外一个object发送message.
the action message 是一个定义在source code 中的selector
the target(接受message的对象)是一个对象执行这个action的能力,target通常是view controller
发送信息的对象通常是一个control,比如buttons,slider,这些对象都能对用户的行为作出响应并触发events.
比如你要恢复一个app的default settings,你需要tap在interface中 恢复buttons,然后这个buttons触发event:send message to view controller,然后,view controller用预先定义好这个event所对应的的source code去handle这个event,set app 到默认的settings.
在ToDoList app中,用到了Target action,在这个case中,Done button 就是发送message的对象,the target object就是ToDoListViewController,the action message就是unWindToList:,而用户tap 这个Done button就触发了event.
Delegation:
delegation是一种simple并且powerful pattern,用delegation,一个对象可以依靠或者与另一个对象进行合作去达成某个purpose;
委托对象占有对另外一个对象的引用,委托对象在合适的时候发送message给另外一个对象,message告诉这个对象,委托对象对委托的event将要handle或已经handle了。然后接到message的这个对象,将作出一些响应,比如更新他自己的appearance或者对app中的别的对象进行操作
通常他将返回一个值,这个值将affect即将发生的事怎样去handle.
delegate pattern在已经存在的framework class中使用频繁,但是你也可以在两个custom object之间实现delegate,通常用户的delegation就是一个subview controller传送value到他的parent controller.
design pattern有许多,但这三类用的最多,在后续中你将会用到更多的design pattern.