android mockview,探讨Android sdk中引入MockView的软件思维

发现问题

最近我在读Android WebView源码时候,发现

public class WebView extends MockView {

/**

* Construct a new WebView with a Context object.

* @param context A Context object used to access application assets.

*/

public WebView(Context context) {

this(context, null);

}

但是我记得上一次看WebView时,它父类是AbsoluteLayout,还带有一些用法的注释,那么这里的MockView是什么鬼?

我又仔细看了下,发现在最新Android sdk android-28中,它是继承MockView, 里面只有接口没有具体实现,但是低版本的sdk比如android-27 android-26它都是正常的,为什么呢?本文就探讨下这个问题。

原因调查

MockView:mock防制、虚假,也就是说这是一个虚假的View。What? 更糊涂了 去Android dev查下。

MockView:Basic view that can draw a label (by default the view id), along with diagonals. Useful as a temporary mock view while building up a UI.基本意思是说,它是用户创建一个UI时用的临时的、仿制的基本View !!!???依旧雾水一头。

百度+谷歌+问大佬一波,有同学表示在单元测试时候,听过这个Mock,Mock测试框架可以将这些测试依赖的对象虚拟化,我们不必创建一个真实对象就可以进行调用测试。它主要作用是模拟一些在应用中不容易构造或者比较复杂的对象,从而把测试与测试边界以外的对象隔离开。

唉,有点意思了! 又看了波大神的文章:https://www.telerik.com/blogs/why-mocking-matters,终于搞明白了,谷歌是利用Mock的思想创建了这个MockView。我们知道谷歌发布的Sdk其实只是为了提供App开发运行接口,实际运行时候替换为当前系统的Sdk。具体说就是当谷歌在新的系统(Framework)版本上准备对WebView实现机制进行改动,同时又希望把新的sdk提前发出来,不影响用到WebView的App开发,于是谷歌提供给Android开发的sdk中让WebView继承自MockView,这个WebView只是暴露了接口,没有具体实现;这样当谷歌关于WebView新的实现做好,利用WebView,app也就做好了,perfect!!

启迪与思考

Mock是一种把合作双方工作解耦合的方法。合作时候双方把合作通道、接口制订好,并首先让合作接口能够返回一些虚拟的数据,这样合作双方就能够互不影响开发进度。比如App和服务器交互的时候,先定义好接口后,服务器写好接口后就暂时写好返回数据(假的),然后双方开始自己开发不受影响。这种思想不仅对我们软件技术开发很有帮助,对其他工作也有指导意义,我们在与人合作完成一件事时候,要首先弄清楚如何合作,其次先把对方有影响的事尽量做好,最后才是自己独立部分,这样合作双方工作能够最大程度不影响对方进度。

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2021 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值