在使用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();

}

}

好诡异的感觉~哈哈!

java 链式写法_JAVA中实现链式操作(方法链)的简单例子相关推荐

  1. java链式编程_Java 中的链式编程

    前言 ​在写项目的时候,有一个实体类有好多个属性,new 出来之后需要不停的使用setXXX( )方法,效率低而且代码可读性差,查询了下发现可以实现实体类的链式编程. public class Use ...

  2. java for循环 写法_java中for循环的6种写法

    packageForLoop;importjava.util.ArrayList;importjava.util.Iterator;importjava.util.List;/*** java中for ...

  3. java 占位符写法_java中占位符

    String类的format()方法用于创建格式化的字符串以及连接多个字符串对象.熟悉C语言的同学应该记得C语言的sprintf()方法,两者有类似之处.format()方法有两种重载形式. form ...

  4. java 本地剪切板_Java中剪切板的操作

    Java提供两种类型的剪贴板:系统的和本地的. (1)本地剪贴板只在当前虚拟机中有效.Java允许多个本地剪贴板同时存在,可以方便地通过剪贴板的名称来进行存取访问. (2)系统剪贴板与同等操作系统直接 ...

  5. java调用android_Java及Android中常用链式调用写法简单示例

    本文实例讲述了Java及Android中常用链式调用写法.分享给大家供大家参考,具体如下: 最近发现,目前大火的许多开源框架中,大多都使用了一种"(方法).(方法).(方法)"的形 ...

  6. java责任链模式_java中责任链模式详解和使用方法

    顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链.这种模式给予请求的类型,对请求的发送者和接收者进行解耦.这种类型的设计模式属于行为 ...

  7. java函数式编程入口_Java中的函数式编程

    前言 JDK8引入的Lambda表达式和Stream为Java平台提供了函数式编程的支持,极大地提高了开发效率.本文结合网络资源和自身使用经验,介绍下Java中的函数式编程 Java中的函数式编程 出 ...

  8. java 基本类型 引用_java中 引用类型 和 基本类型 有何区别?

    栈与堆都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆. Java的堆是一个运行时数据区,类的(对象从中分配空间.这些对象通过new.newa ...

  9. java filter 不过滤器_Java中的Filter过滤器

    Filter简介 Filter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件 ...

  10. java ref 应用类型_Java中的四种引用类型比较

    1.引用的概念 引用这个概念是与JAVA虚拟机的垃圾回收有关的,不同的引用类型对应不同的垃圾回收策略或时机. 垃圾收集可能是大家感到难于理解的较难的概念之一,因为它并不能总是毫无遗漏地解决Java运行 ...

最新文章

  1. 如何启用SQL Server 2008的FILESTREAM特性
  2. Socket拉屎模型之二--实践篇
  3. leetcode算法题--地图中的最高点
  4. Asp.Net Core WebAPI使用Swagger时API隐藏与分组
  5. Android View 的scrollTo 和 scrollBy方法
  6. 《从Excel到R 数据分析进阶指南》一第1章 生成数据表1.1 导入数据表
  7. php 说说,PHP程序员:你过来,给我说说 $this,self,static 有什么区别?
  8. sql必知必会学习记录(五)
  9. vmware16安装mac虚拟机的unlocker
  10. Rtmp协议看一篇就够了
  11. 2路10核物理服务器能否虚拟40vcpu,计算vCPU数量 依据公式
  12. 仿宋小二在html中怎么设置,HTML简短设置字体
  13. LibVLC —— 常用函数解析
  14. 163邮箱如何注册呢?
  15. airflow问题系列2 —— task保持running假死状态
  16. 电脑太卡,重置电脑会解决问题吗
  17. Unity笔记之调节text的字间距
  18. 设置开机自动启动chrome浏览器
  19. AltiumDesigner如何绘制PCB封装
  20. symfonos: 1

热门文章

  1. pandas读取与存储操作详解
  2. SqlServer Convert函数 日期格式化
  3. ad系统安装配置指南(java-jndi-ldap),AD系统安装配置指南(JAVA-JNDI-LDAP-Exchange)
  4. win10启动虚拟机电脑蓝屏----VMware
  5. 考研 英语一 大作文-图画作文 (二)---第二段写作攻略
  6. 最长公共子序列长度以及打印(动态规划入门)
  7. python mro算法_Python MRO C3算法实现
  8. mysql uroot p f_mysql数据库安装
  9. react根据中文获取拼音_学前家长建议收藏:你要的「趣味拼音课」来了
  10. 计算机云计算中心建设项目,某大学计算机云计算云数据中心建设方案.docx