CTMediator
==========

objective-c:

```
pod "CTMediator"
```

swift:

```
use_frameworks!
pod "CTMediator"
```

---


`CTMediator` helps you to divide your project into multi-project, and use `Target-Action` pattern to let subprojects to communicate with each other. *with no regist process!*

you can check demo for more details:

[Origin project](https://github.com/ModulizationDemo/MainProject)

[Modulized Main Project with CTMediator](https://github.com/ModulizationDemo/ModulizedMainProject)

[Demos](https://github.com/ModulizationDemo)

[Swift Demo](https://github.com/ModulizationDemo/SwfitDemo)

add private repo before you run demos:

```
pod repo add PrivatePods https://github.com/ModulizationDemo/PrivatePods.git
```

remember to run `pod install` before you run the demo!

---

[Origin project](https://github.com/ModulizationDemo/MainProject)

[Modulized Main Project with CTMediator](https://github.com/ModulizationDemo/ModulizedMainProject)

[Demos](https://github.com/ModulizationDemo)

[Swift Demo](https://github.com/ModulizationDemo/SwfitDemo)

跑demo时先添加私有库：

```
pod repo add PrivatePods https://github.com/ModulizationDemo/PrivatePods.git
```

然后就可以`pod install`了

---

[iOS应用架构谈 组件化方案](http://casatwy.com/iOS-Modulization.html)

[在现有工程中实施基于CTMediator的组件化方案](http://casatwy.com/modulization_in_action.html)

[CTMediator的Swift应用](https://casatwy.com/CTMediator_in_Swift.html)

---

本工程其实也是个Demo

`Category`目录在实际工程中是单独的一个repo，调用者通过依赖category这个repo来完成功能调度。一般来说是每一个业务对应一个category的repo。因此调用者需要调度哪个业务，就依赖哪个业务的category。category这个repo由对应提供服务的业务来维护。

`CTMediator`目录在实际工程中也是一个单独的repo，仅用于存放中间件。被每一个业务线各自维护的category repo所依赖。

`DemoModule`目录是实际提供服务的业务，这个在实际工程中也是一个单独的repo。这个repo不被任何人所依赖，这个repo通过target-action来提供被调度的功能，然后由category repo通过runtime调度。

---

`CTMediator` helps you to divide your project into multi-project, and use `Target-Action` pattern to let subprojects to communicate with each other.

you can check demo for more details:

[Demo](https://github.com/ModulizationDemo)

[Swift Demo](https://github.com/ModulizationDemo/SwfitDemo)
