Nicky's Blog

超级callback类设计思想

其实用惯了mvc, 基本vc里面都会设置各种callback,尤其是UI事件,不同的层级v,将会导致更多的事件传递,更多的callback,那每个类型,增加一个接口方法?

请求处理类(从下至上)

1
2
3
public interface IObserver {
boolean handleAction(int id, Params params, Params result);
}
1
2
3
public class ActionId {
public static final int ClickXXX = 1;
}

命令控制类(从上至下)

1
2
3
public interface ICommandProcessor {
boolean processCommand(int id, Params params, Params result);
}

参数类

1
2
3
4
5
public class Params implements LinkedPool.ILinkedPoolable {
private static final int MAX_RECYCLED = 16;
private static final ThreadLocal<LinkedPool<Params>> sPool = new ThreadLocal<LinkedPool<Params>>();
...
}

参数key

1
2
3
4
5
6
7
8
public class ParamsKey {
private static int mParamsKeyId = 0;
private static int generateId() {
return mParamsKeyId++;
}
public static final int ItemList = generateId();

当然,这种设计虽然看起来方便,但当业务发展起来后,你会发现如果层级过多,你会不知道,事件在哪个层级被拦截,应该说比较乱,你需要一层层深入看调用,后续将会发现无法控制,但是如果可以做到尽量控制到2个层级节点,业务还是比较纯粹易懂的,另外,不建议用在两个c之间做通讯,适合在vc之间。


转载声明: 本文转载前需与作者联系并标明文章出处