在使用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. PAT(甲级)2021年春季考试 7-3 Structure of Max-Heap
  2. mysql pstop_ps-top 用于MySQL的数据库top工具
  3. 转: 常见加密算法分,用途,原理以及比较
  4. dedecms模板中首页实现分页的方法
  5. 零基础小白一个,我是如何入门商业数据分析师的
  6. java list 排序_Java中List的排序
  7. 对MySQL 进行深入学习是非常必要的
  8. 技术人写作和写代码一样重要
  9. 手机远程linux桌面,centos8安装xrdp远程桌面,Android手机连接linux桌面
  10. oracle批量更新数据从另一表_全市场期货数据的批量下载和更新
  11. java easyui样式_【Java框架型项目从入门到装逼】第八节 - 用EasyUI绘制主界面
  12. docker 中文文档_Kubernetes将弃用Docker,不必恐慌
  13. 人脸系列:人脸检测、人脸关键点定位、人脸优选、人脸对齐、人脸特征提取、人脸跟踪、人脸活体检测
  14. 将汉字转换成笔画代码_0基础学习五笔输入法之汉字的拆分
  15. frpc在linux下开机启动,frp 设置开机自启
  16. cisco、华为交换机常用配置对照表
  17. 【愚公系列】2022年01月 Django商城项目16-用户中心-地址管理之省市三联动功能实现
  18. java计算机毕业设计企业物资管理系统源代码+数据库+系统+lw文档
  19. 物联网发展的尴尬境况:理想与现实仍有差距
  20. 运行django项目报错Couldn‘t import Django

热门文章

  1. python logging模块使用详解
  2. 你应该知道的RPC原理
  3. 修改保留注释_Kraken2:宏基因组快速物种注释神器
  4. python怎么比较两个列表 所有成员,Python从特定角色获取所有成员列表
  5. 前端学java还是python_零基础小白 选择学习 java、php、前端 还是 python?
  6. flask-mail异步发送邮件_Spring Boot邮件发送功能的实现与原理介绍
  7. win10 android设备,巧用《你的手机》链接Win10电脑和Android手机/iPhone
  8. vue延迟渲染组件_做一个可复用的 echarts-vue 组件(延迟动画加载)
  9. java eclipse中修改Web项目的URL访问路径
  10. tp3.2 判断请求类型