面向切面编程

AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。
  AOP与OOP是面向不同领域的两种设计思想。
  OOP(面向对象编程)针对业务处理过程的实体及其属性和行为进行抽象封装,以获得更加清晰高效的逻辑单元划分。
  AOP则是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。
  我们可以单单从上面的字面上来理解AOP和OOP的话,用下面的理解也不为过:
  OOP实际上是对对象的属性和行为的封装,而AOP对于这点就无从谈起,但是AOP是处理某个步骤和阶段的,从中进行切面的提取,也就是说,如果几个或更多个逻辑过程中,有重复的操作行为,AOP就可以提取出来,运用动态代理,实现程序功能的统一维护,这么说来可能太含蓄,如果说到权限判断,日志记录等,可能就明白了。如果我们单纯使用OOP,那么权限判断怎么办?在每个操作前都加入权限判断?日志记录怎么办?在每个方法里的开始、结束、异常的地方手动添加日志?所有,如果使用AOP就可以借助代理完成这些重复的操作,就能够在逻辑过程中,降低各部分之间的耦合了。二者扬长补短,互相结合最好。

typhoon框架介绍

typhoon 是iOS 依赖注入框架,依赖注入就是你需要使用一个对象,你不需要自己去创建这个对象,而是通过系统的ioc容器为你创建一个,并交付给你。 通过ioc容器实现依赖注入,我们可以减少模块和模块,组件和组件之间的耦合,提高代码的可维护性。你需要引用一个对象,不再需要自己去创建,而是通过ioc容器生成,然后注入进去。 typhoon框架地址

typhoon框架使用

倒入typhoon框架

import “TyphoonAssembly.h”

1.继承TyphoonAssembly协议
2.依赖注入的方式,注入一个knight对象。
第一个参数,是你要通过ioc容器生成的对象的类,第二个参数是一个block,block里面带有TyphoonDefinition 类型的参数。在block 里面使用这个参数,对这个对象的属性或方法进行依赖注入。
[TyphoonDefinition withClass: cinfiguration:]

- (Knight*)basicKnight
{return [TyphoonDefinition withClass:[Knight class] configuration:^(TyphoonDefinition* definition){[definition useInitializer:@selector(initWithQuest:) parameters:^(TyphoonMethod *initializer) {[initializer injectParameterWith:[self defaultQuest]];}];}];
}
  1. 需要在appinfo.plist文件中创建一个nsarray,名字为TyphoonInitialAssemblies,在里面添加你实现了TyphoonAssembly 协议的类名。
    类方法 injection
[definition useInitializer:@selector(initWithQuest:) parameters:^(TyphoonMethod *initializer) {[initializer injectParameterWith:[self defaultQuest]];}];

属性注入

 [definition injectProperty:@selector(quest) with:[self defaultQuest]];

普通方法注入:

[definition injectMethod:@selector(setQuest:andDamselsRescued:) parameters:^(TyphoonMethod *method) {[method injectParameterWith:[self defaultQuest]];[method injectParameterWith:@321];}];

如果你需要在注入一个对象之前或之后做一些操作

definition.performAfterInjections = @selector(registerWithSubscriber:) parameters:^(TyphoonMethod *method) {[method injectParameterWith:[self eventSubscriber];
}];

注入集合

[definition injectProperty:@selector(favoriteDamsels) with:@[@"Mary",@"Mary"]];

demo

typhoon简单使用
更详细的demo请到typhoon官网去下载

iOS 面向切面编程与typhoon框架相关推荐

  1. iOS面向切面编程-AOP

    1. AOP简介 AOP: Aspect Oriented Programming 面向切面编程. 面向切面编程(也叫面向方面):Aspect Oriented Programming(AOP),是目 ...

  2. Aspects深度解析-iOS面向切面编程

    ????????关注后回复 "进群" ,拉你进程序员交流群???????? 作者丨monkery 来源丨码上work(codework88) 背景简述 在日常开发过程中是否有过这样 ...

  3. iOS 面向切面编程 Aspects 库的使用

    前言 在使用ios11的系统时,发现UITableView在上拉加载更多时,加载出来数据后tableview的位置有跳动问题. 通过搜索·很快找到了问题的解决方案,需要给tableView设置几个属性 ...

  4. java 切面详解_Java-AOP(面向切面编程)详解

    AOP(面向切面编程)是Spring框架中的一个重要内容.利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率.主要的功能是:日 ...

  5. 【SSM框架系列】Spring 的 AOP(面向切面编程)

    什么是 AOP AOP 为 Aspect Oriented Programming 的缩写,意思为面向切面编程,是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术. AOP 是 OOP ...

  6. Spring框架 AOP面向切面编程(转)

    一.前言 在以前的项目中,很少去关注spring aop的具体实现与理论,只是简单了解了一下什么是aop具体怎么用,看到了一篇博文写得还不错,就转载来学习一下,博文地址:http://www.cnbl ...

  7. java框架013——Spring AOP面向切面编程

    一.Spring AOP简介 AOP的全称是Aspect-Oriented Programming,即面向切面编程(也称面向方面编程).它是面向对象编程(OOP)的一种补充,目前已成为一种比较成熟的编 ...

  8. JAVAEE框架整合技术之Spring02-AOP面向切面编程技术

    Spring新注解 Spring5.0之后的注解称为新注解 使用上面的注解还不能全部替代xml配置文件,还需要使用注解替代的配置 注解 说明 @Configuration 表示当前类是一个配置类,用于 ...

  9. spring框架学习 - 使用 Spring 的面向切面编程

    接上一篇博客:https://blog.csdn.net/qq_43605444/article/details/122029896?spm=1001.2014.3001.5502 七.使用 Spri ...

  10. 大数据WEB阶段Spring框架 AOP面向切面编程(一)

    Spring - AOP面向切面编程(一) 一.代理模式概述 代理的特点:(目标对象即被代理者) 实现和目标对象相同的接口 具备和目标对象的方法 代理者不仅要做目标对象的方法 , 还要做一些额外的操作 ...

最新文章

  1. 把eclipse从英文调整为中文
  2. 【uva10829-求形如UVU的串的个数】后缀数组+rmq or 直接for水过
  3. Linux中Apache2fail,apache2 启动失败,出现下列错误,请问怎么解决,谢谢
  4. 实战3--设计管理模块,整合!!!
  5. .NET Core 2.1预览版首次引入Global Tools
  6. 帮助UI设计师缕清思路的GUI模板素材
  7. leetcode_最长公共前缀
  8. 解决 DBMS_AW_EXP: BIN$*****==$0 not AW$
  9. mac mysql配置jdk_mac开发环境搭建
  10. 可视化报表Superser
  11. 纪念硕士论文圆满答辩结束——20180614
  12. AR引擎vuforia源码分析、中文注释(2)用手势控制来与模型简单交互
  13. 使用模块优化工资计算器
  14. 青花瓷Charles安装
  15. win10 查看电脑mac 地址和ip
  16. 一文了解间隙配合、过盈配合、过渡配合的特点、区别及适用范围
  17. 淘宝/天猫API:item_search_similar-搜索相似的商品
  18. Mysql如何存取Emoji表情包
  19. 美颜相机android版,美颜相机手机版
  20. velodyne+cartographer 2D构建栅格地图

热门文章

  1. 手机话费充值页面HTMLcss3+html5模板
  2. Android应用盈利广告平台的嵌入方法详解
  3. kui 组件化库思路(来啦,老弟,持续更新哦,部署gitpages,添加issue)
  4. 因果推断学习笔记三——Uplift模型
  5. CocosCreater 发布apk接穿山甲广告SDK(一)
  6. 小工程结算书范本_建筑工程结算书范本
  7. 导数、偏导数、梯度、方向导数、梯度下降、二阶导数、二阶方向导数
  8. java 纯真地址库_JAVA解析纯真IP地址库
  9. .com与.top域名有什么区别
  10. 高级计算机网络(习题一加解析)