我们经常看到连缀调用的写法,一大长串类似obj.method1().method2().method3()……methodn();的写法;我在《JavaEE 7精粹》里看到其中一章才知道这叫流式编程风格(fluid programming style),感慨于这种写法的优雅整洁,遂写一个小demo记录一下。之所以能实现连续调用,是因为每一次调用都返回相同类型的对象,demo示例如下:
package com.xf.gmh;
/**
* @author 耿明辉
*
*/
public class Dog {
private String kind;
private String color;
private String age;
public Dog(){
System.out.println(
"我是一只新诞生的虚无狗,我是谁?我哪来的?我不知道自己长什么样,多大啦等信息");
}
public String getKind() {
return kind;
}
public Dog setKind(String kind) {
this.kind = kind;
return this;
}
public String getColor() {
return color;
}
public Dog setColor(String color) {
this.color = color;
return this;
}
public String getAge() {
return age;
}
public Dog setAge(String age) {
this.age = age;
return this;
}
@Override
public String toString() {
return "Dog [kind=" + kind + ", color=" + color + ", age=" + age + "]";
}
}
以上是一个普通狗狗类,注意set方法是有返回类型的,在设值之后,要返回当前对象;下面是测试类:
/**
* 测试流体编程风格
*/
package com.xf.gmh;
/**
* @author 耿明辉
*/
public class TestFluidProgram {
public static void main(String[] args) {
Dog dog=new Dog();
System.out.println("未进行设值之前的dog:"+dog);
//使用流式编程风格设值
dog.setAge("12").setColor("黑色").setKind("拉布拉多");
String str=dog.toString();
System.out.println("经过流式编程风格设值后的dog:"+str);
}
}
经过连续为狗狗的属性设值,运行输入结果如下:
我是一只新诞生的虚无狗,我是谁?我哪来的?我不知道自己长什么样,多大啦等信息
未进行设值之前的dog:Dog [kind=null, color=null, age=null]
经过流式编程风格设值后的dog:Dog [kind=拉布拉多, color=黑色, age=12]
好了,以上就是一个简单的流式编程风格,理解尚浅,请多多指点。