JAVA中实现链式操作(方法链)的简单例子
时间:2022-12-16 00:54:50
在使用jQuery时候,我们经常会看到或者使用到方法链,例如:
$("#p1").css("color","red").slideUp(2000).slideDown(2000);
这段代码的意思是选择器选择id为p1的html标签,颜色变红,之后slideup,再slidedown。
自然是可以将这几个方法分开写,但是不分开的话不仅有很好的易读性,代码量也会有减少,那么何乐而不为?
这种调用函数的方式在jQuery中称为“Chaining”,原理也很简单:能够chaining的方法调用后返回对象本身即可。
下面用java代码做个演示:
不使用chaining:
Persion.java:
public class Persion {
private int id;
private String name;
private String phoneNumber;
private String address;
public Persion() {
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public void setAddress(String address) {
this.address = address;
}
public void printId() {
System.out.println(this.id);
}
public void printName() {
System.out.println(this.name);
}
public void printPhoneNumber() {
System.out.println(this.phoneNumber);
}
public void printAddress() {
System.out.println(this.address);
}
}
Test.java:
public class Test {
public static void main(String[] args) {
Persion persion1 = new Persion();
persion1.setId(3);
persion1.setName("John");
persion1.setPhoneNumber("1111111");
persion1.setAddress("US");
persion1.printId();
persion1.printName();
persion1.printPhoneNumber();
persion1.printAddress();
}
}
使用chaining:
Persion.java:
public class Persion {
private int id;
private String name;
private String phoneNumber;
private String address;
public Persion() {
}
public Persion setId(int id) {
this.id = id;
return this;
}
public Persion setName(String name) {
this.name = name;
return this;
}
public Persion setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
return this;
}
public Persion setAddress(String address) {
this.address = address;
return this;
}
public Persion printId() {
System.out.println(this.id);
return this;
}
public Persion printName() {
System.out.println(this.name);
return this;
}
public Persion printPhoneNumber() {
System.out.println(this.phoneNumber);
return this;
}
public Persion printAddress() {
System.out.println(this.address);
return this;
}
}
Test.java:
public class Test {
public static void main(String[] args) {
Persion persion1 = new Persion();
persion1.setId(3).setName("John")
.setPhoneNumber("1111111").setAddress("US");
persion1.printId()
.printName()
.printPhoneNumber()
.printAddress();
}
}
好诡异的感觉~哈哈!
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
android 网络编程之网络通信几种方式实例分享
关于工厂方法模式的Java实现
spring的jdbctemplate的crud的基类dao
Android实现录音方法(仿微信语音、麦克风录音、发送语音、解决5.0以上BUG)
![](https://img.aspxhome.com/file/2023/5/120155_0s.gif)
SpringBoot深入了解日志的使用
![](https://img.aspxhome.com/file/2023/7/65177_0s.png)
java实现银行ATM管理系统
android 之Spinner下拉菜单实现级联
![](https://img.aspxhome.com/file/2023/4/139124_0s.gif)
Android实现层叠卡片式banner
![](https://img.aspxhome.com/file/2023/2/91702_0s.jpg)
java取两个字符串的最大交集
java旋转二维数组实例
详解SpringBoot注册Windows服务和启动报错的原因
![](https://img.aspxhome.com/file/2023/1/63431_0s.jpg)
C#实现只运行单个实例应用程序的方法(使用VB.Net的IsSingleInstance)
Taro打包Android apk过程详解
java 如何给对象中的包装类设置默认值
SpringBoot2.0解决Long型数据转换成json格式时丢失精度问题
![](https://img.aspxhome.com/file/2023/1/61521_0s.png)
SpringBoot中的PUT和Delete请求使用
![](https://img.aspxhome.com/file/2023/3/96053_0s.jpg)
Java class文件格式之数据类型(二)_动力节点Java学院整理
![](https://img.aspxhome.com/file/2023/3/101943_0s.jpg)
设计模式系列之组合模式及其在JDK和MyBatis源码中的运用详解
![](https://img.aspxhome.com/file/2023/6/68156_0s.png)
C语言实现餐饮管理系统
![](https://img.aspxhome.com/file/2023/4/124044_0s.jpg)