好书推荐-《Head First设计模式》

来源:互联网 发布:公司域名注册 编辑:程序博客网 时间:2024/06/05 17:20

图书信息

  作者:Eric Freeman
  中文版出版社:中国电力出版社

推荐理由

  这是我看过的最好的计算机类图书(别嫌弃我读书少,–>__–>),它有如下优点:
  图文并茂、层层深入、生动有趣、从问题引出解决方案代入感强、每章的总结别出心裁、学习者与设计大师的对话深入浅出、读每一章都像在读一个故事……
  本书一直在强调一件事情:针对接口编程,而不是针对实现编程。“针对接口编程”真正意思是“针对超类型编程”,关键就在多态,利用多态,程序可以针对超类型编程,执行时会根据实际状况执行到真正的行为,不会被绑死在超类型的行为上。分开可能需要变化的部分,把它们独立出来,不要和不需要变化的代码混在一起。

本书内容

1 策略模式
2 观察者模式
3 装饰者模式
4 工厂模式
5 单件模式
6 命令模式
7 适配者与外观模式
8 模板方法模式
9 迭代器与组合模式
10 状态模式
11 代理模式
12 复合模式
13真实世界中的模式
14剩下的模式

对自动化测试的一点启发

  在读命令模式这一章的时候突然联想到一个困扰我多时的问题:在Android应用开发中如何做好功能测试?我们知道移动应用中涉及到大量用户交互场景,很难做到自动化测试,完全自动化不太现实,我们只做逻辑测试会简单一点吧。
  抛开界面,我们的功能其实就是一串方法调用,只是按照我们的开发习惯这些方法会散落在每个界面,我们为什么不把他们从界面拿出来写入一个逻辑处理层呢?这样只需要测试逻辑处理层就可以了。请看我在知乎的提问:作为应用开发者你是如何做好自测的?

Activit01{    btn01{          process01    }    btn02{        process02;        goto Activity02    }}Activit02{    btn03{          process03    }    btn04{        process04;    }}

上面的代码要想测试只能通过页面操作来触发逻辑了。
下面添加逻辑层:

Presenter{    Callback cb    Presenter(Callback cb)    process01    process02    process03    process04}Activit01{    Callback cb    Presenter p = new Presenter(cb)    btn01{          p.process01    }    btn02{        p.process02;        goto Activity02    }}Activit02{    Callback cb    Presenter p = new Presenter(cb)    btn03{          p.process03    }    btn04{        p.process04;    }}Test{    Callback cb    Presenter p = new Presenter(cb)    test01{        p.process01    }    test02{        p.process02    }    test03{        p.process03    }    test04{        p.process04    }}

  这样在Test中你可以随意调用逻辑层代码。
  这是我理解的很原始的MVP模式的实现,可能通过回调不是最简洁的方式,但是最易懂的。

计划

  目前读到适配器与外观模式这一章,后面计划往后读的同时总结前面的章节,真正吸收为自己的东西,以后在开发过程中去运用。

0 0