链式编程可以点点点出属性,通过返回对象本身(this
)可以调用本身的属性。
一般在创建对象并给属性赋值时使用。
这种方式使用会越来越多,很多Apache工具如HttpClient里给RequestConfig
赋值,JDK里面有些类或方法也使用,如:StringBuffer
的 append()
方法。
个人认为的优点:
- 易于编程(编程性强),易于理解(阅读性强)。
- 代码简洁清爽。属性多时赋值不会看到一堆感觉较
low
很多行的对象引用调set
方法。
两者的本质并什么区别;但在代码程面只要有一点优化,也是一种好方法好思路,也是更先进的,值得推广和使用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| public class User { private String name; private String nickName; private int age; private String address; private String phoneNum; public String getNickName() { return nickName; } public User setNickName(String nickName) { this.nickName = nickName; return this; } public String getAddress() { return address; } public User setAddress(String address) { this.address = address; return this; } public String getPhoneNum() { return phoneNum; } public User setPhoneNum(String phoneNum) { this.phoneNum = phoneNum; return this; } public String getName() { return name; } public User setName(String name) { this.name = name; return this; } public int getAge() { return age; } public User setAge(int age) { this.age = age; return this; } @Override public String toString() { return "User [name=" + name + ", nickName=" + nickName + ", age=" + age + ", address=" + address + ", phoneNum=" + phoneNum + "]"; } public static void main(String[] args) { User user = new User() .setAge(22) .setName("张三") .setAddress("xxxxx") .setNickName("san er") .setPhoneNum("13688889999"); System.out.println(user); } }
|