iOSiOS DevelopmentiOS Developer

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

2017-02-22  本文已影响958人  Miaoz0070
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

上一篇下一篇

猜你喜欢

热点阅读