7 墨墨向北

尚未进行身份认证

暂无相关简介

等级
TA的排名 10w+

robolectric完全解析

官网地址:http://robolectric.org介绍:在android设备上跑测试用例太慢了,编译、部署、启动app要花费很多时间。Robolectric是一个单元测试框架,测试是运行在jvm上的,只需要几秒钟。使用:在build.gradle中添加testCompile "org.robolectric:robolectric:3.4"android { testOptions {

2017-08-02 20:12:05

Robotium框架的使用和源码解析

使用:1、添加依赖androidTestCompile 'com.jayway.android.robotium:robotium-solo:5.6.3'2、添加测试代码,例如:@RunWith(AndroidJUnit4.class)public class MainActivityTest { @Rule public ActivityTestRule<MainActivity>

2017-08-01 20:46:58

动态申请权限

官方文档中已经有了详细的介绍和使用说明 https://developer.android.google.cn/guide/topics/security/permissions.html#normal-dangerous下面是我的一些总结:1、为什么要动态申请权限?系统权限分为正常权限和危险权限。正常权限可以在清单文件中列出,系统会自动授予这些权限。对于危险权限,如果设备运行版本大于等于Andro

2017-07-26 16:27:07

gradle中的依赖传递

依赖中的传递依赖怎么去除?1、查看依赖树./gradlew app:dependencies 如果提示zsh: permission denied: ./gradlew 错误,可以输入:chmod +x gradlew2、可以通过在gradle中配置,去除依赖compile('com.android.support:appcompat-v7') { force = true // 冲突时

2017-07-10 20:19:12

访问者模式

访问者模式(Visitor Parttern)属于行为模式,主要用于将数据结构和数据操作分离。使用时,在被访问的类中添加一个方法,通常方法的参数是访问者,这样可以将自身引用传入访问者。总而言之就是,被访问者提供可以访问自身的接口,访问者来操作数据,通过这样实现解耦。可以使用在在对象结构很少变化,对对象的操作经常变化场景中,比如报表统计,过滤器等等。一个访问计算机组件的demo:计算机的部件的接口,对

2017-06-30 11:28:22

中介者模式

中介者模式(Mediator Pattern)式属于行为型模式。是用来降低多个对象和类之间的通信复杂性。:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。比如:MVC 框架,其中C(控制器)就是 M(模型)和 V(视图)的中介者。一个简单的聊天demo:用户:public class User { private

2017-06-29 16:17:23

状态模式

状态模式(State Pattern),属于行为型模式。允许对象在内部状态发生改变时改变它的行为,看起来好像修改了它的类。当代码中包含大量与对象状态有关的条件语句时就可以使用状态模式。可以将各种具体的状态类抽象出来,对象的行为依赖于它的状态(属性),所以状态改变而改变它的相关行为。也就是可以修改类的属性,属性改了,依赖于属性的方法也就改变了。非常简单的一个demo:包含State状态的类:publi

2017-06-28 18:18:04

命令模式

命令模式(Command Pattern)属于行为型模式。这个模式将请求通过命令的形式封装成对象。用来将“行为请求者”与“行为实现者”解耦,这样用户只需要提出一个命令,而不用关心这个命令由谁实现。应用场景:比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的,可以采用命令模式。命令接口:public interface Task { void execute(

2017-06-27 11:19:26

桥接模式

桥接模式(Bridge pattern)属于结构型模式。是用于把抽象化与实现化解耦,使得二者可以独立变化。当一个类存在两个独立变化的维度,且这两个维度都需要进行扩展。就可以用桥接模式。简单的demo:比如食物有牛奶,米饭,香蕉。我要吃饭就吃从这些食物中选。桥接模式可以将抽象的我要吃的那顿饭和实体的食物解耦。食物抽象类:public interface Food { void getFood(

2017-06-26 18:21:11

解释器模式

解释器模式(Interpreter Pattern)属于行为型模式。意图是给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子。一个简单的demo:当前的环境,用于存储当前环境下自定义变量的真假public class Context { private Map<Variable, Boolean> map = new HashMap<>(); //

2017-06-25 21:53:30

模板方法模式

模板方法模式(Template pattern)属于行为模式,用于定义构建某个对象的步骤与顺序,或者定义一个算法的骨架。可以在一个抽象类公开定义执行它的包含执行顺序方法的方法,它的子类可以按需要重写方法实现。demo:游戏的模板抽象类:public abstract class Game { // 子类需要实现的方法 public abstract void startGame();

2017-06-24 15:38:56

装饰器模式

装饰器模式(Decorator Pattern)属于结构型模式。用户向一个现有的对象添加新的功能,同时又不改变其结构。例如,现在有个Girl类,学习的是语数外。现在有的女孩也有学习其他特长,在不改变Girl类的情况下,添加学习舞蹈、唱歌、绘画等特长。Child抽象类:public abstract class Child { abstract void learn();}Girl类:pub

2017-06-23 21:32:51

原型模式

原型模式(Prototype Pattern)属于创建型模式。用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式可以用来创建重复对象。java中通过实现Cloneable接口,重写clone方法实现。一个简单的浅克隆的demo:public class ProtoType implements Cloneable { private int num; public

2017-06-22 14:36:01

外观模式

外观模式(Facade Pattern)属于结构型模式。用来向用户提供一个可以访问系统的接口。在用户调用和复杂系统之间再加一层,这一层用来将处理调用顺序和依赖关系。demo: 在开电脑和关电脑的时候,我们不需要知道电脑的内部结构,只需要按开关就可以了电脑中CPU、硬盘、网络的启动和关闭:public class Cpu { public void start(){ Syst

2017-06-21 11:10:18

适配器模式

适配器模式(Adapter Pattern)属于结构型模式,他用于将一个类的接口转换成用户希望的另外一个接口。 在适配器模式中,我们可以定义一个包装类,包装不兼容接口的对象。demo: 机器人生产厂家想生产一个新产品,可以模仿狗叫,狗跑的机器人机器人接口:public interface Robot { void speak(); void move();}目前生产的机器人,代号

2017-06-20 19:38:46

组合模式

组合模式(Composite Pattern),属于结构型模式,组合模式组合多个对象形成树形结构以表示“整体-部分”的结构层次。组合模式对单个对象(叶子对象)和组合对象(组合对象)具有一致性(统一的接口),在调用时可以忽略复杂的层次结构,使用统一的方式去操作层次结构中的所有对象。使程序能够与复杂元素的内部结构解耦。下面是一个操作文件夹的demo:文件结构: 文件接口:public abstract

2017-06-19 19:51:49

享元模式

享元模式(Flyweight Pattern)属于结构型模式。主要用于减少创建的对象数量,来减少内存占用,提高性能。用法是将很多对象分为几类,确定每个类对象的唯一标示,可以用HashMap存储。简单的demo: 画很多圆的时候,不需要每个圆形都创建一个对象,假设创建不同颜色的画笔是一个很大的开销,就可以以颜色进行分类,一种颜色的圆形只创建一个对象。画图形的接口:public interface S

2017-06-18 20:46:33

责任链模式

责任链模式(Chain of Responsibility Pattern)属于行为型模式。 在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。下面的demo为我们常见的log打印:定义Log责任链的接口:public abstract class Log { // log等级 public stat

2017-06-17 18:37:26

迭代器模式

迭代器模式(Iterator Pattern)属于行为型模式。用于顺序访问集合对象的元素,而且不需要知道集合对象的底层结构。迭代器接口,定义了访问集合的两个方法public interface Iterator { public boolean hasNext(); public Object next();}获取迭代器的接口,所有集合要实现这个接口public interface

2017-06-16 18:09:30

备忘录模式

备忘录模式(Memento Pattern)式属于行为型模式。他用来保存一个对象的某个状态,以便在适当的时候恢复对象。很简单的demo:记录对象的状态public class LastState { private String state; public LastState(String state) { this.state = state; } pu

2017-06-15 17:21:38

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!