标签:esc ESS 大量 框架 实现 element 返回 任务 gui
Java语言编程学习之Lambda表达式设计和架构的原则[图]:开发软件时一个常见的情况是有一个通用的方法,只是步骤上略有不同,我们希望不同的实现能够遵守通用模式,保证他们使用了同一个算法,也是为了让代码更加易读。窗边的小豆豆(http://www.simayi.net/dushubiji/6111.html)读书笔记摘抄好词好句及感悟赏析,一旦你从整体上理解了算法,就能更容易理解其各种表现。
模板方法模式是为这些情况而设计的:整体算法的设计是一个抽象类,它有一系列抽象方法,代表算法中可被定制的步骤,同时这个类中包含了一些通用代码。算法的每一个变种由具体的类实现,它们重写了抽象方法,提供了相应的实现。
使用Java编写DSL
领域专用语言(DSL)是针对软件系统中某特定部分的编程语言。他们通常比较小巧,表达能力也不如Java这样能应对大多数编程任务的通用语言强。DSL高度专用:不求画面俱到,但求有所专长。
Java BDD框架:下面的例子描述了一个Stack的某些行为。
(左右滑动可以查看)
public class StackSpec{{
describe("a stack", it -> {
it.should("be empty when created",expect -> {
expect.that(new Stack()).isEmpty();
});
it.should("push new elementsonto the top of the stack", expect -> {
Stack<Integer> stack = new Stack<>();
stack.push(1);
expect.that(stack.get(0)).isEqualTo(1);
});
it.should("pop the last element pushed onto the stack", expect -> {
Stack<Integer> stack = new Stack<>();
stack.push(2);
stack.push(1);
expect.that(stack.pop()).isEqualTo(2);
});
});
}):
首先我们使用动词 describe 为套件起头,然后定义一个名字表明这是描述什么东西的行为,这里我们使用了 "a stack"。
每一条规则读起来尽可能接近英语中的句子。它们均以 it.should 开头,其中 it 指正在描述的对象。然后用一句简单的英语描述行为,最后使用 expect.that做前缀,描述期待的行为。
检查规则时,会从命令行得到一个简单的报告,表明是否有规则失败。你会发现 pop 操作期望的返回值是 2,而不是 1,因此“pop the last element pushed onto the stack” 这条规则就失败了:
a stack
should pop the last element pushed onto the stack[expected: but was: ]
should be empty when created
should push new element onto the top of the stack
好了,我们本期就到这里了!再见!
Java语言编程学习之Lambda表达式设计和架构的原则[图]
标签:esc ESS 大量 框架 实现 element 返回 任务 gui
原文地址:http://blog.51cto.com/13868750/2145905