iOS 面向切面编程(AOP)--typhoon框架

typhoon配个台风图

最近在看公司的项目,了解到了typhoon框架及面向切面编程思想,以往都是面向对象编程(OOP).

首先先来了解下两个概念:

OOP:

面向对象编程是由单个能够起到子程序作用的单元或对象组合而成,将接口与实现分离的过程,每个对象都能够接收信息、处理数据和向其它对象发送信息。主要包括:对象、类、数据抽象、继承、动态绑定、数据封装、多态性、消息传递。

面向切面编程(AOP):

通过预编译方式和运行期动态代理实现程序功能的统一维护, 针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。
总的概括来说OOP实际上是对对象的属性和行为的封装,而AOP对于这点就无从谈起,但是AOP是处理某个步骤和阶段的,从中进行切面的提取,也就是说,如果几个或更多个逻辑过程中,有重复的操作行为,AOP就可以提取出来,运用动态代理,实现程序功能的统一维护。两者在一起使用扬长补短最好不过了。

typhoon框架介绍

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

typhoon框架使用

** 一、导入typhoon框架**

  import “TyphoonAssembly.h”

二.创建class继承TyphoonAssembly
三.注入一个对象(OTPCoderRequestDTO)

-(OTPCoderRequestDTO *)sendOTPCoderDTO:(NSString *)phone{
    return [TyphoonDefinition withClass:[OTPCoderRequestDTO class] configuration:^(TyphoonDefinition *definition) {
        [definition injectMethod:@selector(generateParamWithPhoneStr:withType:) parameters:^(TyphoonMethod *method) {
            [method injectParameter:phoneStr];
            [method injectParameter:[NSNumber numberWithInt:OTPCodeType_reg]];
        }];
    }];
}

**四、需要在info.plist文件中创建一个nsarray,名字为TyphoonInitialAssemblies,在里面添加你实现了TyphoonAssembly 协议的类名。 **

typhoon Interface Methods

1.类方法注入

- (UIWindow *)mainWindow
{
    return [TyphoonDefinition withClass:[UIWindow class] configuration:^(TyphoonDefinition *definition)
            {
                [definition useInitializer:@selector(initWithFrame:) parameters:^(TyphoonMethod *initializer)
                 {
                     [initializer injectParameterWith:[NSValue valueWithCGRect:[[UIScreen mainScreen] bounds]]];
                 }];
                [definition injectProperty:@selector(rootViewController) with:[self navViewController]];
            }];
}

2.属性注入

  [definition injectProperty:@selector(requestDTO) with:requestDTO];

3.普通方法注入

 [definition injectMethod:@selector(generateParamWithPhone:) parameters:^(TyphoonMethod *method) {
            [method injectParameterWith:phone];
        }];

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

//之后
[definition performAfterInjections:@selector(generateParamWithString:)  parameters:parameters:^(TyphoonMethod *method) {
            [method injectParameterWith:string];
        }];
//之前
[definition performBeforeInjections:@selector(generateParamWithString:)  parameters:parameters:^(TyphoonMethod *method) {
            [method injectParameterWith:string];
        }];

5.注入集合

 [definition injectProperty:@selector(dataArray) with:@[@“1”,@“2”]];

以上基本就是typhoon框架的使用方法了。
下边是typhoon框架地址https://github.com/appsquickly/Typhoon

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,542评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,822评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,912评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,449评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,500评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,370评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,193评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,074评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,505评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,722评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,841评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,569评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,168评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,783评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,918评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,962评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,781评论 2 354

推荐阅读更多精彩内容