• “设计模式系列-策略模式,状态模式”

    08 Nov 2017

    策略模式定义:定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。应用场景:1.多个类只有在算法或行为上稍有不同的场景。2.算法需要自由切换的场景。3.需要屏蔽算法规则的场景。角色:Context封装角色:屏蔽高层模块对策略、算法的直接访问,封装可能存在的变化。Strategy抽象策略角色:策略、算法家族...

    阅读全文 »


  • “设计模式系列-Builder模式,工厂方法模式和抽象工厂模式”

    24 Oct 2017

    建造者的模式定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示使用场景:1.多个部件或零件,都可以装配到一个对象中,但产生的结果又不相同时。2.当初始化一个对象特别复杂的时候,比如参数多,而且很多参数都有默认值。它分为抽象建造者(Builder)角色、具体建造者(ConcreteBui...

    阅读全文 »


  • “设计模式系列-单例模式”

    23 Oct 2017

    1 单例模式单例模式:确保某一个类只有一个实例,自行实例化并向整个系统提供这个实例。使用场景确保某个类只有一个对象的场景,避免产生多个对象消耗资源,或者某个对象应该有且只有一个的场景。特点1.构造函数不对外开放,一般为private2.通过静态方法返回单例类的对象3.确保对象只有一个,尤其是在多线程的情况下4.确...

    阅读全文 »


  • “设计模式系列-面向对象设计原则”

    18 Aug 2017

    1 单一职责原则

    阅读全文 »


  • “gradle构建时间”

    18 Aug 2017

    ##关于构建时间 使用Profile report查看构建时间 在执行的指令后带上 –profile就会在项目/build/report/profile/目录下生成对应时间的profile文件 例如执行build指令 ./gradlew build –profile 会看到这样一个文件

    阅读全文 »


  • “Android 手势处理需要知道”

    10 May 2017

    1.GestureDetector手势检测器

    阅读全文 »


  • “Dagger2使用理解心得”

    26 Apr 2017

    Dagger2,是一个google的依赖注入框架,在项目中有使用,但一直不是很理解使用的过程,现在要做到的是,理解为什么要这么使用。 在我们需要组合一个对象的的时候就需要手动new出该对象,但当我们需要修改这个对象的构造时,就需要对这个被组合的类进行修改,这样就耦合了。我们思考这样一个问题,可否实现这样一种方式,创建一个容器,当我们需要这个对象时,直接从容器中去取。而这个容器就是Dagger2要帮我们做的。 使用Dagger2,我理解为有以下几个部分。 1 调用者(被注入者) 2 注入者 (注入的对象) 3 实例化部分 4 注入桥梁(将实例化的对象注入到调用者中)

    阅读全文 »


  • “编译时生成代码”

    24 Mar 2017

    ButterKnife使我们经常使用的一款View注入框架,使用方便,特点是ButterKnife使用的是编译时生成代码,而不是反射注入。那么我就有一个问题,ButterKnife究竟是如何在编译时生成代码的呢?这就是这篇文章的目的了。。。

    阅读全文 »