这篇文章主要记录
1、在日常开发中遇到的问题总结而成的抽象模型,以及对这些抽象模型的解法
- 锁模型
2、在工作中总结出来的编码原则
- 生存域原则
抽象模型及一般设计方法
- 锁模型:n个控制源(对象)控制/争夺m个被控对象(资源)(n>m),为了保证有序(按一定逻辑)使用资源,需要使用使用“锁”去保证在资源被占满的情况下,控制源有序行使自身逻辑的情况。
case:筛选区
当列表正常滑动时,筛选区需要根据滑动的距离向上移动相应距离,但是当受动画控制时,在动画播放期间,就需要完全受动画控制。
控制源:滑动事件、动画播放
被控对象:筛选区
控制逻辑(锁):
-
当动画没有播放的时候,滑动事件持有锁;
-
当动画播放时,动画播放器持有锁;
-
锁的生命周期与筛选区一致;
编码原则
- 生存域原则:对象、方法都有其工作的范围,要以最少满足为原则划分生存域范围。
这个原则常用于私有/公共对象的划分,一般只在类内生效的方法/对象都需要规定为私有对象。这原则可以保证程序的安全,调试方便。不遵守这个原则会有什么后果呢?
Bad case 1:在锁模型中,锁需要在和被控资源生命周期一致,否则会出现上一轮竞争的结果影响后续的竞争。或者根本起不到锁作用的情况。