比如Android的RecyclerView做下拉刷新
如果你从Adapter内部入手去制作,这叫侵入式
如果像官方的SwipeRefreshLayout一样,这叫非侵入式
官方的下拉刷新就很神奇
他只需要在RecyclerView外面套一层SwipeRefreshLayout,他就拥有了下拉刷新的功能
这是很好的非侵入式实现
我后来自己仿照着这个思路写了一个
原理大概就是
在自定义这个下拉控件的类里
我会通过getChildAt()这个方法拿到RecyclerView
然后调用RecyclerView的api去监听他的下滑距离
在下滑距离为0且正处于下拉手势的时候
进入下拉刷新状态
如果设计成侵入式
我没这么干过
不过可以理解为:任何RecyclerView需要因此作出改变的情况,就是侵入式
比如RecyclerView需要实现某个接口,我们需要自定义RecyclerView,我们需要改变Adapter
那就是侵入式了
其实我认为最优的设计
应该是非侵入式的
这样才解耦啊