最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

学习记录Mac的App的设计模式

Mac crifan 2386浏览 0评论

上接:在Mac的Framework下面写代码


继续记录学习Streamline Your App with Design Patterns的心得:

1.所谓设计模式,其实就是给出你一些在编程所最好遵循的规则,遵循该规则,可以使得代码更高效,更优雅,减少耦合度,增加可扩展性。。。

2.最常见最重要的设计模式时MVC

model_view_controller

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:

举例为:

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的设计模式

    发表我的评论
    取消评论

    表情

    Hi,您需要填写昵称和邮箱!

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址
    82 queries in 0.182 seconds, using 22.02MB memory