最近刚刚换工作,到新公司的任务是重构公司的APP,有了灵感写了这个架构。
先介绍背景: 1、APP是一款金融平台产品,要接入很多不同流程的金融产品。
2、产品虽然流程不同但是大部分的流程都可以复用。
3、未来可能会在短时间内接入更多的产品。
4、希望可以有一个简单的使用入口和出口,便于程序的开发和调试。
再介绍设计的构想:
1、希望可以将程序逻辑划分成可以复用的action。
2、action使用者调用时只关心目标。并不关心action需要的准备的数据和条件。
3、action需要准备的数据和条件都由其前置条件action进行自动准备,调用者并不关心。
4、在复杂情况下,action可能会由前置条件的action的结果更换前置条件action并重新开始。
5、action link可以保证线程安全可配置。
6、action可以由调用者随意cancel。
7、action可以在action还未执行时动态的添加删除action。
8、action的设计者可以有机会对异常情况进行处理,并自己定制成功失败的条件。
9、action的前置条件如涉及用户可交互的洁面,应使用一个manager负责向action报告action的成功失败即可。
10、执行者可以选择代理和block作为回调。
这是目前遇到的一个最复杂的情况,
1、VC执行action1这个流程。
2、action2,action3、action4为action1的前置条件,任一失败即action1失败。
3、action5为action2的前置条件。
4、根据action5的结果,如果满足条件1则将action6置为action2的前置条件,如果满足条件2则将actiion7置为action2的前置条件,如均不满足则失败。
5、action2的前置条件均准备完成,执行action2。
6、action2,action3,action4均执行成功执行action1。
7、action1成功报告VC执行成功,失败则报失败给你VC。
如果我们将来有一个action0需要action1的结果则可以将action1作为前置条件,整个流程也会被复用,如只需部分的流程可以将Action Link的一部分剥离出来进行复用,目前这套框架已经开发完成,实验成功。我还在继续完善欢迎大家指出不足或者还有哪些可能会遇到的不能满足的需求。
http://www.eryige.com/forum.php?mod=viewthread&tid=174&fromuid=4
(出处: 二一个)