java安卓设计模式是什么样的_有哪些在实际 Android 项目中用到的设计模式?

谢邀。

Android的设计模式实际上也就是Java的设计模式,题主想看设计模式在实际工程中的应用,那建议题主去看 JUnit的源码或者分析。

JUnit是Java中著名的单元测试框架,其作者是两位世界级的软件工程大师:GOF四人帮之一的Erich Gamma和敏捷开发的开创者之一Kent Beck。JUnit很好的体现了两位的程序设计思想,其中也非常灵活的运用了多种设计模式,如果深入学习一定会能使题主灵活的掌握和使用各类设计模式,设计模式就23种,关键是看你怎么使用。

以下是对于命令模式在JUnit中的使用分析:

3.2 Command(命令)模式

3.2.1问题

首先要明白,JUnit是一个测试framework,测试人员只需开发测试用例。然后把这些测试用例组成请求(有时可能是一个或者多个),发送到JUnit FrameWork,然后由JUnit执行测试,最后报告详细测试结果。其中包括执行的时间,错误方法,错误位置等。这样测试用例的开发人员就不需知道JUnit内部的细节,只要符合它定义的请求格式即可。从JUnit的角度考虑,它并不需要知道请求TestCase的操作信息,仅把它当作一种命令来执行,然后把执行测试结果发给测试人员。这样就使JUnit 框架和TestCase的开发人员独立开来,使得请求的一方不必知道接收请求一方的详细信息,更不必知道是怎样被接收,以及怎样被执行的,实现系统的松耦合。

3.2.2模式的选择

Command(命令)模式则能够比较好地满足需求(请参见Gamma, E., et al. Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, Reading, MA, 1995)。摘引其意图(intent),将一个请求封装成一个对象,从而使你可用不同的请求对客户进行参数化;对请求进行排队或记录请求日志...Command告诉我们可以为一个操作生成一个对象并给出它的一个execute(执行)方法。

3.2.3实现

为了实现Command模式,首先定义了一个接口Test,其中Run便是Command的Execute方法。然后又使用Default Adapter模式为这个接口提供了缺省实现TestCase抽象类,这样我们开发人员就可以从这个缺省实现进行集成,而不必从Test接口进行实现。

我们首先来分析Test接口。它存在一个是countTestCases方法,它来统计这次测试有多少个TestCase,另外一个方法就是我们的Command模式的Excecute方法,这里命名为run。还有一个参数TestResult,它来统计测试结果

public interface Test {

/*** Counts the number of test cases that will be run by this test.*/

public abstract int countTestCases();

/*** Runs a test and collects its result in a TestResult instance.*/

public abstract void run(TestResult result);

}

TestCase是该接口的抽象实现,它增加了一个测试名称,因为每一个TestCase在创建时都要有一个名称,因此若一个测试失败了,你便可识别出是哪个测试失败。

public abstract class TestCase extends Assert implements Test {

/*** the name of the test case*/

private String fName;

public void run(TestResult result) {

result.run(this);

}

}

这样我们的开发人员,编写测试用例时,只需继承TestCase,来完成run方法即可,然后JUnit获得测试用例,执行它的run方法,把测试结果记录在TestResult之中,目前可以暂且这样理解。

3.2.4效果

下面来考虑经过使用Command模式后给系统的架构带来了那些效果:Command模式将实现请求的一方(TestCase开发)和调用一方(JUnit Fromwork)进行解藕

Command模式使新的TestCase很容易的加入,无需改变已有的类,只需继承TestCase类即可,这样方便了测试人员

Command模式可以将多个TestCase进行组合成一个复合命令,实际你将看到TestSuit就是它的复合命令,当然它使用了Composite模式

Command模式容易把请求的TestCase组合成请求队列,这样使接收请求的一方(Junit Fromwork),容易的决定是否执行请求,或者一旦发现测试用例失败或者错误可以立刻停止进行报告

Command模式可以在需要的情况下,方便的实现对请求的Undo和Redo,以及记录Log,这部分目前在JUnit中还没有实现,将来是很容易加入的

分析出处:UML软件工程组织

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值