AOP

什么是切片

程序要完成一件事情,一定会有一些步骤,1,2,3,4这样。这里分解出来的每一个步骤我们可以认为是一个切片。

什么是AOP

你针对每一个切片的间隙,塞一些代码进去,在程序正常进行1,2,3,4步的间隙可以跑到你塞进去的代码,那么你写这些代码就是面向切片编程

解决什么问题

如果想在每个步骤中间做一些自己的事情,不用AOP的话,需要直接往步骤之间塞代码就好了。但通常塞进去的代码很有可能跟原业务无关,比如统计。这就会导致同一份代码文件里掺杂了多种业务,造成业务之间的耦合。为了降低这种耦合,需要使用AOP

如何实现AOP

AOP一般都是需要有一个拦截器,然后在每一个切片运行之前和运行之后(或者任何你希望的地方),通过调用拦截器的方法来把这个jointpoint扔到外面,在外面获得这个jointpoint的时候,执行相应的代码。
iOS中实现AOP总体来说有两种方法:

  • method swizzling. 这种方法的最小粒度是方法。这种方法有了成熟的开源库Aspects.
  • delegate. 定义一个protocol, 然后在合适的时机把jointpoint扔给代理,让代理做一些事情。

本文参考

iOS应用架构谈(三):View层的组织和调用方案(下)

原文地址:https://www.cnblogs.com/mindyme/p/4584113.html