继续记录学习Streamline Your App with Design Patterns的心得:
1.所谓设计模式,其实就是给出你一些在编程所最好遵循的规则,遵循该规则,可以使得代码更高效,更优雅,减少耦合度,增加可扩展性。。。
2.最常见最重要的设计模式时MVC
3.delegate
delegate也是一个对象。此对象,负责处理另外一个对象,被delegating的对象,的事情。
即对象A的代理对象ADelegate,就像A的管家,A有事件要发生了,会去问问ADelegate,获得对应的反馈。
比如A是个窗口,A收到一个关闭窗口的事件,则A会把此事件传递给ADelegate,ADelegate经过检查,发现当前窗口有些资源还在使用,不能释放,然后返回给A,告诉A,不能关闭窗口。
被代理的对象,往往是一个Framework对象,利用代理实现对其扩展,而不需要再subclass了。
4.Protocol:使得两个对象之间得以通讯,但不必去实现继承
5.Notification Center:通知中心,是一个server,其他注册者是listener,如果以后有对应的事情发生或将要发生,server会发消息通知listener。
Notification和delegate类似,都可以实现当一个事件发生,可以发送给任一对象,区别在于notification没有返回值。
即notification只负责告诉对象,事件发生了,你看着办吧,不管什么返回值的。
而delegate是要有返回值的。
两者都是异步的。
6.Target-Action:
举例为:
7.Key-Value Observing(KVO)
允许一对象监视另一对象的某属性。
当另一对象的属性的值变化了,该对象可以收到通知。
8.其他一些设计模式:
- View hierarchy:不同层次的视图,即layer
- Responder chain:一系列的对象。即一个消息,从始到终传递过程中所经历涉及的对象(窗口,controller,app对象本身等)
- View controller:控制,管理对象的显示(隐藏等)
- Receptionist:bounced,反弹,从一个execution context(进程中的dispatch queue)反弹到另一个。
- Category:通过添加方法的方式去实现对一个类的扩展。
转载请注明:在路上 » 学习记录Mac的App的设计模式